Methods and apparatus to reduce audio streaming latency between audio and Gigabit Ethernet subsystems

ABSTRACT

Example methods, apparatus, systems and articles of manufacture to reduce audio streaming latency between audio and Gigabit Ethernet subsystems are disclosed herein. An example integrated circuit disclosed herein to process an audio stream associated with an endpoint device on a network includes an Ethernet subsystem to access the network and an audio subsystem to process audio data associated with the audio stream. The disclosed example integrated circuit also includes a direct hardware path between the Ethernet subsystem and the audio subsystem to exchange audio data between the Ethernet subsystem and the audio subsystem without the audio data being processed by a first software driver that is to provide access to the Ethernet subsystem or a second software driver that is to provide access to the audio subsystem.

FIELD OF THE DISCLOSURE

This disclosure relates generally to audio streaming, and, moreparticularly, to methods and apparatus to reduce audio streaming latencybetween audio and Gigabit Ethernet subsystems.

BACKGROUND

Audio Video Bridging (AVB) is a protocol for streaming audio and videotraffic over Ethernet networks. For example, professional audio/videogear, such as that used in recording studios, public address systems,etc., employ AVB to convey audio and/or video streams between audio andvideo endpoints networked via an Ethernet network. Such endpoints caninclude, but are not limited to, media devices, speakers, microphones,etc., some of which may implement advanced audio features, such asactive noise cancelling, echo cancellation, speech processing, etc.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a block diagram of an example AVB system including anexample system-on-a-chip (SoC) integrated circuit that implements anexample AVB direct attach (ADA) feature to reduce audio streaminglatency between audio and Gigabit Ethernet subsystems in accordance withteachings of this disclosure.

FIG. 2 illustrates a block diagram of the example AVB system of FIG. 1in which the ADA feature is enabled by the example SoC integratedcircuit for an audio signal streamed at an example AVB endpoint.

FIG. 3 illustrates a block diagram of an example Ethernet-side AVBoffloader 230 included in the example SoC integrated circuit of FIG. 2.

FIG. 4 illustrates a block diagram of an example AVB driver audio streamoffloader included in the example SoC integrated circuit of FIG. 2.

FIG. 5 illustrates a block diagram of an example audio-side AVBoffloader 232 included in the example SoC integrated circuit of FIG. 2.

FIG. 6 illustrates a block diagram of an example Ethernet subsystemaudio stream offloader included in the example SoC integrated circuit ofFIG. 2.

FIG. 7 illustrates an example configuration of the example SoCintegrated circuit of FIG. 2 to process an audio stream that is to berendered at a remote audio endpoint.

FIGS. 8, 9, 12 and 13 depict example sequence diagrams that furtherillustrate operation of the example SoC integrated circuit of FIG. 2.

FIGS. 10 and 11 depict example waveforms showing the start and stop ofan audio stream flow in the example SoC integrated circuit of FIG. 2.

FIG. 14 illustrates example computer readable instructions that may beexecuted to implement the ADA feature in the example SoC integratedcircuit of FIG. 2.

FIG. 15 is a block diagram of an example processing platform structuredto execute the instructions of FIGS. 8, 9, 12 and 13 to implement theexample SoC integrated circuit of FIG. 2.

The figures are not to scale. In general, the same reference numberswill be used throughout the drawing(s) and accompanying writtendescription to refer to the same or like parts, elements, etc.

DETAILED DESCRIPTION

Example methods, apparatus, systems and articles of manufacture (e.g.,physical storage media) to reduce audio streaming latency between audioand Gigabit Ethernet subsystems are disclosed herein. As noted above,AVB is a protocol for streaming audio and video traffic over Ethernetnetworks. The AVB protocol enables audio and/or video streams to beconveyed between audio and video endpoints (e.g., media devices,speakers, microphones, etc.) networked via an Ethernet network. Forexample, professional audio/video gear, such as that used in recordingstudios, public address systems, etc., employ AVB to convey audio and/orvideo streams, as well as other control/communication interfaces,between the endpoints at different locations in a vehicle, in a plant,etc. AVB also includes global time synchronization using precision timeprotocol (PTP) to enable phase synchronization of multiple audio streamsbeing communicated to different endpoints, such as from a media device(e.g., entertainment unit) to multiple speakers at different locationsin an automobile, in a warehouse, etc.

Increasingly, audio and video endpoints networked using AVB implementadvanced audio features, such as active noise cancelling, echocancellation, speech processing, etc. For example, an audio system foran automobile may not only play audio via the automobile's speakers, butmay also include one or more microphones to capture audio for input tosuch advanced audio features as active noise cancelling, echocancellation, etc. However, such advanced audio features may rely on lowaudio path latency to achieve acceptable performance (e.g., acceptableaudio quality). For example, to achieve acceptable performance, activenoise cancellation technologies may rely on low latency for the inputmicrophone audio capture path so that the input audio processed by theactive noise cancellation feature provides an accurate characterizationof the audio to be cancelled.

Current audio solutions for AVB include System-on-a-Chip (SoC)architectures that implement separate hardware Ethernet and audiosubsystems that are accessed and connected together by respective hostsoftware stacks, such as an AVB software driver (also referred to as anAVB driver) to access the Ethernet subsystem and an audio softwaredriver (also referred to as an audio driver) to access the audiosubsystem. The host software stacks are executed by one or more hostprocessors implemented by the SoC. When the Ethernet and audiosubsystems are connected through their respective host software stacks,the latency of an audio stream is lower bounded by the latency of theoperating system (OS) executed by the SoC host processor(s).Unfortunately, such latency experienced by current audio solutions thatperform AVB through connected host software stacks may exceed thelatency expected by audio features offered by an AVB system.

Example methods, apparatus, systems and articles of manufacture (e.g.,physical storage media) disclosed herein provide technical solutions toreduce the technical problem of end-to-end audio path latency in priorAVB systems. To reduce audio path latency, example technical solutionsdisclosed implement an example AVB Direct Attach (ADA) feature thatprovides a direct hardware path between a converged audio voicesubsystem (cAVS) and an Ethernet subsystem, such as a Gigabit EthernetController (GbE controller), implemented by an SoC. Providing a directhardware path can reduce the end-to-end audio path latencysubstantially, such as by an order of magnitude (e.g., from 35 ms. to 3ms.). The ADA feature disclosed herein allows advanced audio features,such as active noise cancelling, echo cancellation, speech processing,etc., to meet desired performance characteristics (e.g., quality ofservice (QoS)) that are functions of end-to-end audio path latency. Asfurther disclosed herein, example solutions to implement ADA alsoprovide means for offloading an AVB audio stream from an audio pathusing host software stacks (software drivers) to connect Ethernet andaudio subsystems to a direct hardware path that attaches the Ethernetand audio subsystems of the SoC without processing by the host softwarestacks (software drivers).

Turning to the drawings, FIG. 1 illustrates a block diagram of anautomotive AVB system 100 that implements an example ADA feature toreduce audio streaming latency between audio and Gigabit Ethernetsubsystems in accordance with teachings of this disclosure. In theillustrated example of FIG. 1, the AVB system 100 is depicted as an AVBnetwork 100, but the AVB system 100 could correspond to any type oftime-sensitive network, such as a time-sensitive network specified bythe IEEE 802.1 suite of specifications. For example, the AVB system ofthe illustrated example may implement an automotive audio system 100.The example AVB system 100 of FIG. 1 includes example AVB endpoint 102,105 and 107, an example first AVB compliant Ethernet switch 104, anexample second AVB compliant Ethernet switch 106, an example GigabitEthernet (GbE) subsystem 108, an example AVB driver 110 (also referredto as an example AVB software (SW) stack 110), an example double datarate (DDR) memory 112, an example audio driver 114 (also referred to asan example audio SW stack 114), an example converged audio and voicesubsystem (cAVS) 116, example first audio peripherals 118 including anexample first speaker 118S and an example first microphone 118M, andexample second audio peripherals 120 including an example second speaker120S and an example second microphone 120M. In the illustrated examplesystem 100 of FIG. 1, the GbE subsystem 108, the AVB driver 110, the DDRmemory 112, the audio driver 114, and the cAVS subsystem 116 areimplemented on a system-on-a-chip (SoC) 122 residing in, for example, ahead entertainment unit of an automobile. In some such examples, the AVBendpoint 102 resides in a rear entertainment unit of the automobile.

In some examples, an audio signal streaming (from an external source) atthe AVB endpoint 102 is to be played by the speaker 118S coupled to thecAVS 116. In an example in which ADA feature is not enabled for theaudio signal streamed at the AVB endpoint 102, the audio signal takes afirst path 126 that begins at the AVB endpoint 102, and proceeds to theGbE subsystem 108, the AVB driver 110, the DDR memory 112, the audiodriver 114 and to the cAVS subsystem 116 for rendering at the speaker118S. However, as described above, the path 126 may exhibit in highlatency due to the portion of the path 126 processed by the AVB driver110 and the audio driver 114.

FIG. 2 illustrates a block diagram of the example AVB system 100 of FIG.1 in which the ADA feature is enabled for the audio signal streamed atthe AVB endpoint 102. The illustrated example of FIG. 2 corresponds toan audio capture path from the AVB endpoint 102 to the SoC 122 in whichthe audio signal takes a second path 226 that begins at the AVB endpoint102 and proceeds to the GbE subsystem 108. At the GbE subsystem 108, theaudio stream is offloaded from the AVB driver 110 and the audio driver114 and, instead, proceeds directly to the DDR memory 112 and then tothe cAVS subsystem 116. As such, the DDR memory 112 can correspond toany system and/or local memory (e.g., such as, but not limited to staticrandom access memory (SRAM)) that is accessible by both the GbEsubsystem 108 and the cAVS subsystem 116. In some examples, the ADAfeature utilizes an example dedicated portion 228 of the DDR memory 112to maintain the data structures used to transfer audio data for a givenstream when the ADA feature is enabled for that stream. Thus, the secondpath 226 is a direct hardware path between the cAVS subsystem 116 andthe GbE subsystem 108, which bypasses the AVB driver 110 and the audiodriver 114. For an audio render path from the SoC 122 to the AVBendpoint 102 in which the ADA feature is enabled, the audio signal wouldtake a similar direct hardware path as the path 226, but in the reversedirection. In this way, once the ADA feature is enabled for a givenstream, audio data for that audio stream is exchanged between the GbEsubsystem 108 and the cAVS subsystem 116 without being processed by theAVB driver 110 and the audio driver 114 (e.g., without the AVB driver110 and the audio driver 114 being invoked, executed, called, etc., toexchange the audio data between the GbE subsystem 108 and the cAVSsubsystem 116).

In the illustrated example, the SoC 122 offloads an AVB audio streamfrom a conventional software-based path (e.g., the path 126) to a directhardware path (e.g., the path 226) using AVB offloading functionalityillustrated as an example Ethernet-side AVB offloader 230 and an exampleaudio-side AVB offloader 232 in FIG. 2. In the illustrated example, theEthernet-side AVB offloader 230 is collectively implemented by the GbEsubsystem 108 and the AVB driver 110, and the audio-side AVB offloader232 is collectively implemented by the cAVS subsystem 116 and the audiodriver 114. Once the AVB audio stream has been offloaded to the directhardware path (e.g., the path 226), an example processor 234 of the cAVSsubsystem 116, such as an example digital signal processor (DSP) 234included in the cAVS subsystem 116, controls the transfer of audio databetween the cAVS subsystem 116 and the GbE subsystem 108 using anexample inter-process communication (IPC) interface 236 implemented bySoC 122 to allow elements of the SoC to intercommunicate. Although theprocessor 234 is illustrated as a DSP in the example of FIG. 2, in otherexamples, the processor 234 could be implemented by any other type ofprocessing element, such as a hardware accelerator, a programmabledigital logic device, etc. Furthermore, although the interface 236 isillustrated as an IPC interface in the example of FIG. 2, in otherexamples, the interface 236 could be implemented by any other type ofinterface architecture, such as a read/write register interface, amemory mapped interface, etc.

FIG. 3 illustrates an example implementation of the Ethernet-side AVBoffloader 230 of FIG. 2, as well as other elements of the GbE subsystem108 and the AVB driver 110 that are used to implement the ADA feature inthe illustrated example. In the example of FIG. 3, the AVB driver 110includes an example AVB driver audio stream offloader 302 and an exampleAVB driver non-offload stream handler 304. In the example of FIG. 3, GbEsubsystem 108 includes an example GbE subsystem audio stream offloader306, an example GbE non-offload stream handler 308, an example inputstream buffer 310, an example stream analyzer 312, and an exampleendpoint device handler 314. In in the illustrated example, the AVBdriver audio stream offloader 302 and the Gbe subsystem portion of GbEsubsystem audio stream offloader 306 operate cooperatively duringinitial audio stream offloading to implement the Ethernet-side AVBoffloader 230 to initially transfer (or, in other words, hand-off) theaudio streams that are to be offloaded to a direct hardware path (e.g.,the path 226) in the SoC 122.

In some examples, an audio stream supplied by the endpoint device 102(see FIG. 1 and FIG. 2) is received at the input stream buffer 310. Thestream analyzer 312 analyzes the input stream in the input stream buffer310. In some examples, the stream analyzer 312 determines, based on avirtual local area network (VLAN) tag included in the stream, that thestream is not to be offloaded. In some such examples, the streamanalyzer 312 causes the input stream buffer 310 to supply the stream tothe GbE non-offload stream handler 308. In response, the GbE non-offloadstream handler 308 performs one or more actions needed to prepare thestream for conventional handling by the AVB driver non-offload streamhandler 304. In some such examples, the GbE non-offload stream handler308 also supplies the stream to the AVB driver non-offload streamhandler 304. The AVB driver non-offload stream handler 304 operates toprepare the stream for transmission to the AVB driver 110, which furthercauses the stream to be stored in the DDR memory 112 for subsequentaccess by the audio driver 114.

In other examples, the stream analyzer 312 determines that the audiostream received at the input stream buffer 310 from the endpoint device102 includes a VLAN tag that indicates that the ADA feature is to beenabled for the audio stream and, thus, the audio stream is to beoffloaded to a direct hardware path connecting the GbE subsystem 108 andthe cAVS subsystem 116 (e.g., using the dedicated portion 228 of the DDRmemory 112), rather than being processed through the AVB driver 110 andthe audio driver 114. In some such examples, the stream analyzer 212causes the input stream to be supplied to the GbE subsystem audio streamoffloader 306.

In some examples, the stream analyzer 312 determines that the streamreceived at the input stream buffer 310 includes a communication fromthe endpoint device 102 announcing that the endpoint device 102 hascoupled to the AVB system 100. In some such examples, the example streamanalyzer 312 causes the communication to be transmitted to the exampleendpoint device handler 314. The endpoint device handler 314 causes thecommunication to be transferred to the example AVB driver audio streamoffloader 302 for use in determining whether audio stream(s) receivedfrom (or to be supplied to) the endpoint device 102 is(are) to beoffloaded to a direct hardware path connecting the GbE subsystem 108 andthe cAVS subsystem 116.

FIG. 4 illustrates a block diagram of an example implementation of theAVB driver audio stream offloader 302 of FIG. 3. In the illustratedexample, the AVB driver audio stream offloader 302 includes an exampleendpoint discoverer and enumerator 404, an example parameter exchanger406, an example offload requester 408, an example stream connector 410,an example queue designator 412, an example offload decider 414, anexample VLAN tag assignor 416, example local memory 418, and an examplesynchronizer 422, which implement functionality associated with theinitial offloading of an audio stream to a direct hardware pathconnecting the GbE subsystem 108 and the cAVS subsystem 116. In someexamples, when the endpoint device 102 couples to the AVB system 100,the endpoint device 102 transmits a message over the Ethernet networkannouncing the device's presence. In some examples, the message isreceived at the example input stream buffer 310 of the GbE subsystem108. As described above with respect to FIG. 3, the stream analyzer 312determines that the information stored in the input stream buffer 310includes a message containing an announcement and causes the message tobe transmitted to the endpoint device handler 314. In return, theendpoint device handler 314 causes the message to be communicated to theexample AVB driver audio stream offloader 302. Additionally oralternatively, in some examples, the AVB driver audio stream offloader302 periodically transmits (e.g., via the GbE subsystem 108) queries onthe Ethernet network of the AVB system 100 for the presence of newendpoint devices (e.g., such as the devices 105 and 107). In someexamples, responses to the queries are treated as messages announcingthe presence of an endpoint device.

In some examples, when the AVB driver audio stream offloader 302receives a presence announcement message from an endpoint device, suchas the endpoint device 102, the AVB driver audio stream offloader 302begins a negotiation process by which the Ethernet-side AVB offloader230 and the endpoint device 102 agree upon various aspects of theconnection. In some examples, the negotiation process begins when theexample endpoint discoverer and enumerator 404 performs a set ofdiscovery and enumeration functions. In some examples, the endpointdevice 102 and the endpoint discoverer and enumerator 404 establish acommunication channel between the endpoint device 102 and theEthernet-side AVB offloader 230. In some examples, the endpoint device102 can be a “listener” device (e.g., a speaker, an audio headset, etc.)or a “talker” device (e.g., a microphone) or both.

In some examples, the example endpoint discoverer and enumerator 404reads device capability information supplied by the endpoint device 102.In some examples, the endpoint discoverer and enumerator 404 obtains aMAC address of the endpoint device 102, a device identifier, a streamidentifier, a timestamp, a gateway identifier, etc. In some examples,the endpoint discoverer and enumerator 404 obtains informationidentifying any audio streaming capabilities of the endpoint device 102.The endpoint discoverer and enumerator 404 compares the audio streamingcapabilities of the endpoint device 102 with audio application servicesavailable from the cAVS subsystem 116 of the SoC 122. Upon making thecomparison, the endpoint discoverer and enumerator 404 identifies any ofthe services available from the cAVS subsystem 116 of the SoC 122 thatare relevant to (e.g., useable by) the endpoint device 102 and notifiesthe endpoint device of such relevant services.

In some examples, the example endpoint discoverer and enumerator 404performs any of a variety of other operations including, but not limitedto: determining a number of streams to be supplied by or to the endpointdevice 102, determining a direction in which streams will travel on theAVB system 100 between the SoC 122 and the endpoint device 102,determining a number of channels to be allotted for each of the streams,etc. Based on this information, the endpoint discoverer and enumerator404 provides the endpoint device 102 with a sampling rate, a samplesize, etc., by which streams are to be communicated between the endpointdevice 102 and the SoC 122.

In the illustrated example, the stream connector 410 performs a nextphase of the negotiation sequence by determining a connection topologyof the AVB system 100. The connection topology indicates, for example, amanner in which the endpoint device 102 is connected to one or moreother endpoints in the AVB system 100. For example, the endpoint device102 can render the same and/or different streams to one or more otherendpoints of the AVB system). In another example, in the case of streamcapture, there can be one or more AVB stream connections from multipleendpoints delivered to the endpoint 102 acting as a receiving endpoint.

In the illustrated example, the synchronizer 422 performs a furtherphase of the negotiation sequence by synchronizing the AVB real-timeaudio streams with a global precision time protocol (PTP) time managedby the SoC 122. The PTP timer source may be implemented in the SoC 122or may be implemented in any other device in the AVB system 100.Synchronizing in this manner allows different “speakers” of the AVBsystem 100 to be phase synchronized at sub sample accuracy (e.g., in therange of tens of nanoseconds) over multiple switch hops. The accuracy isachieved in accordance with the AVB PTP specification and a low jittergrand master clock in the SoC 122 maintains time alignment of PTPpresentation time. For PTP slave endpoints the presentation time isaccounted for with offset to the master clock maintained by the SoC 122.

Once the negotiation sequence and synchronization is completed such thatthe endpoint device 102 has been initialized and enumerated, bandwidthhas been reserved, the connection topology has been determined and theendpoint device 102 has been synchronized with the SoC 122, the exampleoffload decider 414 determines whether to enable the ADA feature foroffloading audio streams received from and/or transmitted to theendpoint device 102 to a direct hardware path for communication with thecAVS subsystem 116, instead of processing the audio streams via the AVBdriver 110 and the audio driver 114. In some examples, a decision tooffload audio streams associated with the endpoint device 102 is basedon an AVB device type and identifier associated with the endpoint device102, as well as the capabilities of the GbE subsystem 108. In someexamples, the offload decider 414 consults a whitelist including a listof whitelisted device types, device identifiers, vendor identifiers,virtual local area network (VLAN) tags, VLAN priority parameters, streamidentifiers (e.g., “stream_id” parameters), destination medium accesscontrol (DMAC) addresses, etc., associated with endpoint devices thatare suitable for ADA offloading. In some examples, the whitelist isstored in the local memory 418, which may be any read/write memory suchthat the whitelist is updateable over time (e.g., by an originalequipment manufacturer (OEM) that updates the whitelist). The term“whitelist” is used in this disclosure only for its technical meaning.The term “whitelist” may be substitute with the term “list of devicessuitable for offloading.”

In some examples, if the example offload decider 414 determines that anAVB stream associated with the endpoint device 102 is to be offloaded toa direct hardware path in the SoC 122 (based on the list of whitelisteddevices), the offload decider 414 notifies the example queue designator412 and the example VLAN tag assignor 416. The queue designator 412responds to the notification by configuring dedicated queues in the GbEsubsystem 108 by which audio streams that are transferred between theGbE-side AVB offloader 230 and the example audio-side AVB offloader 232by way of the example DDR memory 112 (e.g., the dedicated portion 228 ofthe DDR memory 112) are communicated to/from the Ethernet network of theAVB system 100. The dedicated queues are illustrated in the exampleimplementation of the GbE subsystem audio stream offloader 306 shown inFIG. 6, which is discussed further hereinbelow.

Referring still to FIG. 4, in the illustrated example, the VLAN tagassignor 416 determines one or more VLAN tags to be carried by the audiostreams communicated between the endpoint device 102 and the SoC 122. Insome examples, the VLAN tag assignor 316 communicates the tags to theendpoint device 102 so that in future communications, the endpointdevice 102 embeds the VLAN tag in an Ethernet header packet of streamsthat are communicated to the Ethernet-side AVB offloader 230. The VLANtags and the dedicates queues (discussed further below) are used toisolate the offloaded streams from other Ethernet traffic processed bythe GbE subsystem 108 of the SoC 122.

In the illustrated example of FIG. 4, the offload requestor 408generates an offload request to be sent to the example audio-side AVBoffloader 232. The offload request is a request to offload audio streamsreceived from (or to be transmitted to) the endpoint device 102. Theoffload requestor 408 causes an example GbE subsystem IPC transceiver626 (see FIG. 6) of the GbE subsystem audio stream offloader 306 totransmit the offload request to the example audio-side AVB offloader 232via the example sideband IPC interface 235 (see FIG. 2). In someexamples, the offload request includes a request for information aboutfeatures offered by the cAVS subsystem 116 and a request to perform theoffload. When the request to offload is accepted by the audio-side AVBoffloader 232, the example parameter exchanger 406 of FIG. 4communicates parameters to the audio-side AVB offloader 232 for use insupporting the offloaded audio streams. In some examples, the parametersinclude a number of channels to be included in the stream, a sampleframe rate of the stream, a sample size, etc. In some examples, theparameters transmitted by the parameter exchanger 406 to the audio-sideAVB offloader 232 include AVB header information. Such information caninclude an AVB identifier (AVBID) that is unique to streams associatedwith the endpoint device 102, such as, but not limited to, a streamidentifier (e.g., a “stream_id” parameter), a destination medium accesscontrol (DMAC) address, etc. Additionally or alternatively, in someexamples, the AVBID can be information that is unique to a class ofstreams, such as, but not limited to, a VLAN tag, a VLAN priorityparameter, etc.

As described in further detail below, the audio-side AVB offloader 232uses the AVBID to generate a work descriptor to be used by theEthernet-side AVB offloader 230 and the audio-side AVB offloader 232 toprocess offloaded audio streams. In some examples, the example parameterexchanger 406 also transmits the VLAN tags assigned by the VLAN tagassignor 416 as well as PTP synchronization support information to theaudio-side AVB offloader 232. The audio-side AVB offloader 232 uses theinformation to determine whether available hardware and firmwareresources in the cAVS subsystem 116 are sufficient to support theprocessing of the offloaded audio stream. Based on whether suchresources are sufficient, the audio-side AVB offloader 232 eitheraccepts or rejects the offload request.

When the offload request is rejected, AVB audio streams received fromand/or delivered to the endpoint device 102 will not be offloaded todirect hardware paths in the SoC 122 but, instead, will be handled viaconventional software-based paths (e.g., the path 126) described above.However, when the offload request is accepted, AVB audio streamsreceived from and/or delivered to the endpoint device 102 will beoffloaded to direct hardware paths (e.g., the path 226) as describedabove and in further detail below.

FIG. 5 is an example implementation of the audio-side AVB offloader 232.In the illustrated example, the audio-side AVB offloader 232 include anexample audio subsystem IPC transceiver 526, an example descriptorgenerator 528, an example direct memory access (DMA) controller 530, anexample pointer controller 534, an example audio-side ownership setter540, an example audio-side ownership checker 542, an example memoryallocator 546, an example offload request response generator 548, anexample feature checker 550, an example data structure builder 552, andexample audio-side local memory 554. In the example of FIG. 5, the audiodriver 114, which is implemented by software and/or firmware in theillustrated example, implements the descriptor generator 528, the memoryallocator 546, the offload request response generator 548, the featurechecker 550, and the data structure builder 552, as shown, whichimplement functionality associated with the initial offloading of anaudio stream to a direct hardware path connecting the GbE subsystem 108and the cAVS subsystem 116. In the example of FIG. 5, the DSP 234 of thecAVS subsystem 116, which is implemented by hardware in the illustratedexample, executes firmware to implement the pointer controller 534, theaudio-side ownership setter 540, and the audio-side ownership checker542, as shown, which implement functionality associated with thesteering of audio data associated with an audio stream that has beenoffloaded to a direct hardware path connecting the GbE subsystem 108 andthe cAVS subsystem 116.

As described above, the Ethernet-side AVB offloader 230 initiates arequest to offload an audio stream associated with an AVB endpoint, suchas the AVB endpoint 102, to a direct hardware path in accordance withthe ADA feature described herein. In the illustrated example of FIG. 5,the request is received by the offload request response generator 548,which invokes the feature checker 550 to determine whether cAVSsubsystem 116 includes an ability to enable the ADA feature for thegiven audio stream(s) associated with the AVB endpoint 102. In someexamples, the feature checker 550 uses the stream parameters receivedfrom the parameter exchanger 406 (see FIG. 4) to cross check hardwareand firmware resources available in the cAVS subsystem 116 to ensurethere is sufficient support for the offloading of streams. Exampleresource checks can include checks for firmware module availability, DMAchannel availability, internal bandwidth allocation, etc. If there aresufficient resources, the example feature checker 550 confirms theability to offload the audio streams associated with the endpoint 102 toa direct hardware path. The offload request response generator 548 thentransmits an appropriate response to the Ethernet-side AVB offloader 230indicating whether the offload request is accepted or rejected.

In the illustrated example of FIG. 5, to prepare to handle the offloadedaudio streams, the example memory allocator 546 allocates a portion ofthe DDR memory 112 (which, as described above, can correspond to anysystem and/or local memory that is accessible by both the GbE subsystem108 and the cAVS subsystem 116) for storing the offloaded streams duringtransfer between the GbE subsystem 108 and the cAVS subsystem 116. Insome examples, the memory allocator 546 allocates one or more portionsof the DDR memory 112, such as the portion 228 illustrated in FIG. 2,that are not accessible to other entities of the SoC 122. In theillustrated example, the data structure builder 552 further generates adata structure in the allocated portion 228 of the DDR memory 112 tosupport offloading of communication of audio streams directly betweenthe GbE subsystem 108 and the cAVS subsystem 116. In some examples, thedata structure is implemented as a circular ring of work descriptors,also referred to as a circular descriptor ring, with each workdescriptor including a pointer that points to a respective payloadbuffer included in a payload section allocated in the portion 228 of theDDR memory 112. Example work descriptors, payload buffers and associateddata structures are described in further detail below.

In some examples, when the offload request is accepted, the example datastructure builder 552 generates a data structure in the example audioside local memory 554 to support offloading the audio stream(s)associated with the endpoint 102. In some examples, the data structureis formatted similar, or identical, to the data structure created in theDDR memory 112 by the data structure builder 552 (e.g., and, thus, isstructured as a circular descriptor ring with corresponding payloadbuffers associated with the work descriptors in the ring). In some suchexamples, the data structure builder 552 invokes the example descriptorgenerator 528 to generate one or more work descriptors corresponding toeach audio stream to be offloaded for the endpoint device 102. In someexamples, multiple work descriptors are generated for a given audiostream and arranged in a circular ring to allow pipelined processing ofthe audio stream's data packets. A work descriptor is used to identify agiven stream associated with the example AVB endpoint 102 and includes apointer address to a data payload buffer associated with that stream. Insome examples, one workload descriptor may handle multiple streams(e.g., such as aggregated streams). For a workload descriptor includedin the data structure maintained in the audio side local memory 554, thepointer address contained in the descriptor identifies a location in theaudio side local memory 554 at which a payload of the audio streamassociated with the work descriptor is to be stored. For a workloaddescriptor included in the data structure maintained in the DDR memory112, the pointer address contained in the descriptor identifies alocation in the DDR memory 112 at which a payload of the audio streamassociated with the work descriptor is to be stored.

The example audio-side AVB offloader 232 of FIG. 5 includes the examplepointer controller 534 to generate enqueue pointers and check dequeuepointers, respectively, to enable data to be written to and read fromthe data structures created by the data structure builder 552 in the DDRmemory 112 and the audio side local memory 554. For a given circularring descriptor created in the DDR memory 112 for a given offloadedaudio stream associated with an AVB endpoint, such as the endpoint 102,the pointer controller 534 generates an enqueue pointer in the DDRmemory 112 that points to the next work descriptor in the ringidentifying the next payload buffer to which a next audio packetassociated with the audio stream is to be stored. The pointer controller534 also maintains a shadow copy of a dequeue pointer that the GbEsubsystem 108 generates to point to the next work descriptor in the ringin the DDR memory 112 at which a next audio payload buffer associatedwith the audio stream is to be accessed (e.g., read from or written to)by the GbE subsystem 108. For the corresponding circular ring descriptorcreated in the audio side local memory 554 for that offloaded audiostream, the pointer controller 534 can maintain corresponding shadowcopies of the enqueue and dequeue pointers that shadow the correspondingpointers in the DDR memory 112. The shadow pointers for thecorresponding circular ring descriptor in the audio side local memory554 enable the contents of the data structure in the audio side localmemory 554 to be transferred to/from the data structure in the DDRmemory 112 using direct memory access (DMA) transfers managed by the DMAcontroller 530. In some examples, the pointer controller 534 maintainsadditional pointers, such as a last dequeue pointer to point to the lastwork descriptor from which data was dequeued by the GbE subsystem 108(e.g., to avoid overrun events), etc.

As an example, when writing data being rendered by the cAVS subsystem116 for the given audio stream, the pointer controller 534 generates theenqueue pointer for the circular ring descriptor in the audio side localmemory 554 for that audio stream such that the enqueue pointer points tothe descriptor identifying the next payload buffer in the audio sidelocal memory 554 to which audio data is to be written. The pointercontroller 534 also generates the corresponding enqueue pointer for theshadowed circular ring descriptor in the DDR memory 112 once the writtendata has been DMA transferred from the audio side local memory 554 tothe DDR memory 112 such that the enqueue pointer points to thedescriptor in the DDR memory 112 identifying the corresponding payloadbuffer to which the data was written. Likewise, when reading data beingcaptured by the cAVS subsystem 116 for the given audio stream, thepointer controller 534 generates an enqueue pointer for the shadowedcircular ring descriptor in the DDR memory 112 which points to thedescriptor identifying the next payload buffer to which the GbEsubsystem 108 is to write the audio data for that audio stream. Thepointer controller 534 also generates a corresponding shadow enqueuepointer for the circular ring descriptor in the audio side local memory554 for that audio stream once the audio data for that stream has beenDMA transferred from the audio side local memory 554 to the DDR memory112 such that the shadow enqueue pointer points to the descriptor in theaudio side local memory 554 identifying the payload buffer in the audioside local memory 554 to which the audio data was DMA transferred.

In some examples, each work descriptor includes an ownership bit. Assuch, the example audio-side AVB offloader 232 of FIG. 5 includes theaudio-side ownership setter 540 to set the ownership bit of a given workdescriptor, and includes the audio-side ownership checker 542 to testthe ownership bit of a given work descriptor to determine whether thework descriptor is owned by the GbE subsystem 108 or the cAVS subsystem116. For example, for a workload descriptor associated with an offloadedaudio stream to be captured by the cAVS subsystem 116, the audio sideownership setter 540 sets the ownership bit to indicate that the GbEsubsystem 108 initially owns the workload descriptor. Once data iswritten to the workload descriptor by the GbE subsystem 108, theownership bit is set to indicate the cAVS subsystem 116 owns theworkload descriptor. Before attempting to read data from the workloaddescriptor, the audio-side ownership checker 542 tests the ownership bitto confirm the cAVS subsystem 116 owns the workload descriptor. Onceownership is confirmed, the cAVS subsystem 116 can read the audio datafrom the payload buffer associated with the workload descriptor. Theaudio side ownership setter 540 then sets the ownership bit to indicatethat the GbE subsystem 108 now owns the workload descriptor, whichpermits the GbE subsystem 108 to write new data to the payload bufferassociated with that the workload descriptor.

As another example, for a workload descriptor associated with anoffloaded audio stream to be rendered by the cAVS subsystem 116, theaudio side ownership setter 540 sets the ownership bit to indicate thatthe cAVS subsystem 116 initially owns the workload descriptor. Once datais written to the workload descriptor by the cAVS subsystem 116, theaudio side ownership setter 540 sets the ownership bit to indicate theGbE subsystem 108 owns the workload descriptor. Once data is read fromthe workload descriptor by the GbE subsystem 108, the ownership bit isset to indicate the cAVS subsystem 116 again owns the workloaddescriptor. Before attempting to write new data to the workloaddescriptor, the audio-side ownership checker 542 tests the ownership bitto confirm the cAVS subsystem 116 owns the workload descriptor. Onceownership is confirmed, the cAVS subsystem 116 can write new audio datafrom the payload buffer associated with the workload descriptor. Theaudio side ownership setter 540 then sets the ownership bit to indicatethat the GbE subsystem 108 now owns the workload descriptor, whichpermits the GbE subsystem 108 to read the new data from the payloadbuffer associated with that the workload descriptor.

In the illustrated example of FIG. 5, the audio subsystem IPCtransceiver 526 enables the cAVS subsystem 116 to communicate with theGbE subsystem 108 via the IPC interface implemented in the SoC 122. Forexample, the audio subsystem IPC transceiver 526 is used to communicateADA offload requests and responses between the cAVS subsystem 116 andthe GbE subsystem 108, send messages to the GbE subsystem 108 indicatingwhen the data structure maintained in the DDR memory 112 for a givenoffloaded audio stream has been updated by the cAVS subsystem 116 and isready to be accessed by the GbE subsystem 108, receive messages from theGbE subsystem 108 indicating when the data structure maintained in theDDR memory 112 for a given offloaded audio stream has been updated bythe GbE subsystem 108 and is ready to be accessed by the cAVS subsystem116, etc.

FIG. 6 illustrates an example implementation of the GbE subsystem audiostream offloader 306. The GbE subsystem audio stream offloader 306 ofthe illustrated example includes an example input stream queue 602, anexample output stream queue 604, an example Ethernet-side ownershipchecker 608, an example Ethernet-side ownership setter 610, an examplequeue filler 612, an example pointer controller 614, an example queueemptier 616, example input pointer registers 618, example output pointerregisters 620, an example stream constructor 622, and an example GbEsubsystem IPC transceiver 626, which implement functionality associatedwith the steering of audio data associated with an audio stream that hasbeen offloaded to a direct hardware path connecting the GbE subsystem108 and the cAVS subsystem 116.

As described above, the queue designator 412 (see FIG. 4) designatesdedicated queues in the GbE subsystem 108 by which audio streams thatare transferred between the GbE-side AVB offloader 230 and the exampleaudio-side AVB offloader 232 by way of the example DDR memory 112 (e.g.,the dedicated portion 228 of the DDR memory 112) are communicatedto/from the Ethernet network of the AVB system 100. In the illustratedexample of FIG. 6, the queue designator 412 has designated a firsthardware queue in the GbE subsystem 108 to operate as the output streamqueue 604 has designated a second hardware queue in the GbE subsystem108 to operate as an input stream queue 602. The output stream queue 604is used to transmit an offloaded AVB stream received by the GbEsubsystem 108 from the cAVS subsystem 116 via the data structureimplementing the direct hardware path in the DDR memory 112 to theEthernet network of the AVB system 100. The input stream queue 602 isused to transmit an offloaded AVB stream received by the GbE subsystem108 from the Ethernet network of the AVB system 100 to the cAVSsubsystem 116 via the data structure implementing the direct hardwarepath in the DDR memory 112. Although one input stream queue 602 and oneoutput stream queue 604 are shown in the example of FIG. 6, any numberof input stream queues 602 and/or output stream queues 604 may bedesignated to be used for AVB stream offloading, thereby keeping the AVBtraffic separate from the other data traffic being handled by the GbEsubsystem 108.

When an offloaded input audio stream for which ADA has been enabled(e.g., as determined by a VLAN tag included in the audio stream packets)is received from an AVB endpoint, such as the endpoint 102, the queuefiller 612 causes the received data to be transferred from the inputstream buffer 310 (see FIG. 3) to the input stream queue 602. In theillustrated example, when audio stream data is placed into the inputstream queue 602, the pointer controller 614 extracts information fromthe input audio stream data, such as the VLAN tag, endpoint deviceidentifiers, etc. The pointer controller 614 compares the extractedinformation to the work descriptors generated by the audio-side AVBoffloader 232 to identify the circular ring of work descriptors in theDDR memory 112 that correspond to this audio stream.

Next, the pointer controller 614 checks the relevant enqueue pointergenerated by the audio-side AVB offloader 232 for that circular ring ofwork descriptors and stores the pointers as a shadow enqueue pointer inthe input pointer registers 618. As described above, the enqueue pointeridentifies the most recent payload buffer made available by theaudio-side and to which the input stream is to be stored in the DDRmemory 112. In the illustrated example, the pointer controller 614generates a running dequeue pointer stored in the input pointerregisters 618 for the input audio stream being processed as input audiodata is transferred from the input stream queue 602 to the datastructure maintained in the DDR memory 112 for that input audio stream.The dequeue pointer generated by the pointer controller 614 points tothe descriptor in the DDR memory 112 identifying the current payloadbuffer consumed by the GbE subsystem 108 to store the input audio data.The pointer controller 614 may also maintain a last enqueue pointer forthe input audio stream, which indicates that last work descriptor in thecircular ring that was generated by the cAVS subsystem 116 (e.g., toensure unprocessed audio data is not overwritten). In the illustratedexample, the Ethernet-side ownership checker 610 is used to check theownership bit of the work descriptor pointed to by the enqueue pointerto confirm the descriptor is owned by the GbE subsystem 108 before theinput stream queue 602 transfers data to the work descriptor, and theEthernet-side ownership setter 608 sets the ownership bit to indicatethe descriptor is owned by the cAVS subsystem 116 after the datatransfer is complete.

In the case of an offloaded output audio stream for which ADA and thatis to be transmitted from the cAVS subsystem 116 for rendering at an AVBendpoint, such as the endpoint 102, the pointer controller 614identifies the circular ring of work descriptors in the DDR memory 112that correspond to that output audio stream. The pointer controller 614then checks the relevant enqueue pointer generated by the audio-side AVBoffloader 232 for that circular ring of work descriptors and stores thepointer as a shadow enqueue pointer in the output pointer registers 620.As described above, the enqueue pointer identifies the most recentpayload buffer to which the output stream is to be stored in the DDRmemory 112. In the illustrated example, the pointer controller 614generates a running dequeue pointer stored in the output pointerregisters 620 for the output audio stream being processed and configuresthe output stream queue 604 with the generated dequeue pointer. Thedequeue pointer generated by the pointer controller 614 points to thedescriptor in the DDR memory 112 identifying the current payload bufferto be consumed by the GbE subsystem 108 to read the output audio data.Configuring the output stream queue 604 with the dequeue pointer causesthe output stream queue 604 to access the work descriptor in thecorresponding data structure maintained in the DDR memory 112 for thisaudio stream which is pointed to by the dequeue pointer, and then readthe audio data from the payload buffer identified by that workdescriptor.

The pointer controller 614 may also maintain a last enqueue pointer forthe output audio stream, which indicates that last work descriptor inthe circular ring that was processed by the cAVS subsystem 116 (e.g., toensure the output stream queue 604 does not read past the last validdata). In the illustrated example, the Ethernet-side ownership checker610 is used to check the ownership bit of the work descriptor pointed toby the dequeue pointer to confirm the descriptor is owned by the GbEsubsystem 108 before the output stream queue 604 reads data from thework descriptor, and the Ethernet-side ownership setter 608 sets theownership bit to indicate the descriptor is owned by the cAVS subsystem116 after the data transfer is complete.

The example GbE subsystem audio stream offloader 306 of FIG. 6 includesthe queue emptier 616 to cause the audio data to be read from the outputstream queue 604 and provided to the stream constructor 622. The streamconstructor 622 formats the audio data to create an AVB-compliant audiodata stream to be transmitted to the associated AVB endpoint, such asthe endpoint 102, for rendering.

In the illustrated example of FIG. 6, the GbE subsystem IPC transceiver626 enables the GbE subsystem 108 to communicate with the cAVS subsystem116 via the IPC interface implemented in the SoC 122. For example, theGbE subsystem IPC transceiver 626 is used to communicate ADA offloadrequests and responses between the GbE subsystem 108 and the cAVSsubsystem 116, send messages to the cAVS subsystem 116 indicating whenand where the data structure maintained in the DDR memory 112 for agiven offloaded audio stream has been updated by the GbE subsystem 108and is ready to be accessed by the cAVS subsystem 116, receive messagesfrom the cAVS subsystem 116 indicating when the data structuremaintained in the DDR memory 112 for a given offloaded audio stream hasbeen updated by the cAVS subsystem 116 and is ready to be accessed bythe GbE subsystem 108, etc.

FIG. 7 illustrates an example configuration of the SoC 122 to process anaudio stream that is to be rendered at a remote audio endpoint, such asthe endpoint 102. In the example of FIG. 7, the ADA feature has beenenabled for the audio stream and, thus, the audio stream has offloadedto a direct hardware path for communication between the GbE subsystem108 and the cAVS subsystem 116. In the illustrated example, the GbEsubsystem 108, the cAVS subsystem 116 and the DDR memory 112 of the SoC122 are shown. Furthermore, in the illustrated example, the DSP 234, theDMA controller 530 and the local memory 554 of the cAVS subsystem 116are shown. In the example of FIG. 7, the cAVS subsystem 116 alsoincludes an example host interface 704 including an example businterface unit 708 that provides access to the DDR memory 112.

In the example of FIG. 7, an audio stream (e.g., such as pulse codemodulated (PCM) data) is rendered from the SoC 122 to the AVB endpointdevice 102. Because ADA is enabled for the audio stream, the DSP 234acts as a proxy for the AVB driver 110 controlling the transmission ofthe audio stream to endpoint device 102. In the illustrated example, theaudio-side AVB offloader 232 has already prepared, as described above,an example AVB data structure 712 in the DDR memory 112 for the audiostream. As described above, the AVB data structure 712 includes anexample circular ring of work descriptors 716 and an associated examplepayload section 720, with each work descriptor including a respectiveexample pointer 724 that points to a respective payload buffer includedin the payload section. In some examples, each audio stream beingprocessed by the SoC 122 includes a respective AVB data structure 712with a corresponding circular ring of work descriptors 716 andassociated example payload section 720. To simplify the AVB datastructure interface, the payload buffers associated with the descriptorsare configured as a contiguous memory region to avoid scatter-gathercomplexity.

In the illustrated example, the audio-side AVB offloader 232 has alsoalready prepared an example local AVB data structure 732 in the localmemory 554 (illustrated as an L2 SRAM). The local AVB data structure 732includes an example circular ring of work descriptors 736 and anassociated example payload section 740 that mirrors the AVB datastructure 712 in the DDR memory 112. In the illustrated example, theaudio-side AVB offloader 232 has further prepared example AVB pointers744 to manage access to the AVB data structures 712 and 732 by the cAVSsubsystem 116. For example, the pointers 744 include an example runningenqueue pointer 748 generated by the audio-side AVB offloader 232, andan example running dequeue pointer 752 and an example last dequeuepointer 756, which correspond to shadowed versions of the correspondingpointers generated by the GbE subsystem 108.

In operation, the DSP 234 prepares the descriptors and associatedpayload buffers in the local AVB data structure 732 in accordance withthe AVB protocol, and then arms the DMA controller 530 (represented byline 760 in FIG. 7.) The DMA controller 530 than transfers the preparedportions of the local AVB data structure 732 to the corresponding AVBdata structure 712 in the DDR memory 112 (represented by line 764 inFIG. 7.) In the illustrated example of FIG. 7, the DMA controller 530uses the AVB pointers 744, which are updated by the DSP 234, to controlwhich descriptor(s) and associated payload buffer(s) are transferredfrom the local AVB data structure 732 to the corresponding AVB datastructure 712. In some examples, the DSP 234 also checks and sets theownership bit(s) of the descriptor(s), as described above.

Once the DMA transfer is complete, the DSP 234 sends an IPC message tothe GbE subsystem 108, which triggers the GbE subsystem 108 to startprocessing the audio stream's AVB data structure 712 in the DDR memory112. In the illustrated example of FIG. 7, the GbE subsystem 108 hasgenerated an example running dequeue pointer 768 and also checked anexample last enqueue pointer 772 that has been prepared by theaudio-side AVB offloader 232 for this audio stream and stored thepointers in the output pointer registers 620. The GbE subsystem 108 usesthe running dequeue pointer 768 and the last enqueue pointer 772 to readthe work descriptor and then the corresponding audio data for the audiostream from the AVB data structure 712. In some examples, the GbEsubsystem 108 also checks and sets the ownership bit(s) of thedescriptor(s), as described above. The GbE subsystem 108 then fetchesand processes the descriptors from the AVB data structure 712, accessesthe payload of the AVB data structure 712 using direct memoryaddressing, and transmits the audio stream as Ethernet packets on theEthernet network of the AVB system 100 to the endpoint 102.

FIG. 8 depicts an example sequence diagram 800 that further illustratesexample operation of the SoC 122 of FIG. 7 to output an ADA offloadedaudio stream to an AVB endpoint device, such as the endpoint 102. Theexample sequence diagram 800 of FIG. 8 illustrates operation of the cAVSsubsystem 116, the DDR memory 112 and the GbE subsystem 108 of the SoC122 to output the audio packets for the offloaded audio stream on theEthernet network of the AVB system 100, which is labeled as the Ethernetnetwork 804 in FIG. 8. In the illustrated example of FIG. 8, a maximumnumber of work descriptors and a threshold descriptor count for thegiven output audio stream are configurable. For example, in the sequencediagram 800, the number work descriptors for the audio stream has beenset to 4, and the maximum count of the threshold descriptor count isless than or equal to 2 work descriptors.

To process an audio stream to be rendered at the AVB endpoint device102, the example sequence diagram 800 begins at the operation labeled 1of FIG. 8 at which the DSP 234 of the cAVS subsystem 116 prepares aninitial set of two work descriptors for the audio stream, and alsoprepares the payload to be rendered for the period interval (e.g., 125us). In addition, the DSP 234 of the cAVS subsystem 116 may performpost-processing on the audio stream to be rendered. After any suchpost-processing is completed, the DSP 234 of the cAVS subsystem 116 setsup a DMA buffer in the local memory 554 and then arms the DMA controller530 to transfer the two initial descriptors and associated payload tothe allocated region in the DDR memory 112 (e.g., such as the region228).

Next, at the operation labeled 2 of FIG. 8, the DSP 234 of the cAVSsubsystem 116 sends an IPC command containing an initial enqueuedescriptor pointer (referred to herein as INIT_ENQ_PTR) to the GbEsubsystem 108. The GbE subsystem 108 responds to the INIT_ENQ_PTR bychecking the ownership bit of the associated workload descriptoraddressed by the INIT_ENQ_PTR. Provided that the descriptor is validatedby the check of the ownership bit as being owned by the GbE subsystem108, the GbE subsystem 108 uses the pointer to fetch the firstdescriptor for the stream to be rendered. In the illustrated example,the IPC command is sent via the IPC interface 236 connecting cAVSsubsystem 116 and accepted by the GbE subsystem 108.

At the operation labeled 3 of FIG. 8, based on the configuration of theGbE subsystem 108 for descriptor prefetch, the GbE subsystem 108 usesdirect memory access to one or more descriptors for processing. In someexamples, internal Ethernet bandwidth allocation and schedule managementis performed by the GbE subsystem 108. In some such examples, the GbEsubsystem 108 processes the current work descriptor (in this case thefirst descriptor) and gets its payload buffer pointer address.

At the operation labeled 4 of FIG. 8, the GbE subsystem 108 uses thepayload buffer address contained in the current work descriptor to fetchthe payload from system memory.

At the operation labeled 5 of FIG. 8, when the cAVS schedule time (e.g.,1 ms. or 0.33 ms. for ultra-low latency scheduling) elapses, the DSP 234of the cAVS subsystem 116 prepares more descriptors and payloads, whichare again stored in a shared region of the DDR memory 112. In someexamples, DSP 234 of the cAVS subsystem 116 tracks the firmwarescheduling and AVB time periods to ensure the number of work descriptorsattempted to be processed do not exceed the maximum, and so that thethreshold number descriptors are continuously available for the GbEsubsystem 108 to process. Note that the cAVS descriptor preparation timemay not align with PTP period time.

At the operation labeled 6 of FIG. 8, when the network time matches thecurrent work descriptor (first descriptor) dispatch time, the protocoland link layer send the Ethernet packet onto the physical cable. Fortransmit packets, the current PTP time is updated in the Ethernet packetwhen the packet is sent or retried (e.g., either during the initialattempt to send the packet or a later attempt to send the packet after acollision detection).

At the operation labeled 7 of FIG. 8, when the Ethernet packet(associated with the first descriptor) is successfully sent on theEthernet network, the current work descriptor is updated to release theownership (OWN) field in the descriptor and descriptor is written backinto DDR memory 112, which allows the DSP 234 of the cAVS subsystem 116to get the descriptor completion update.

For end-to-end low latency, at the operation labeled 8 of FIG. 8, whichmay be optional in some examples, a peer interrupt is sent from the GbEsubsystem 108 to the DSP 234 of the cAVS subsystem 116. The interruptcould be a wired interrupt or a peer vendor-defined interrupt message tothe DSP 234. If a peer interrupt is not supported by the SoC 122, theDSP 234 can read the top of the descriptor chain to poll and determineif the descriptor is completed (e.g., to determine whether the OWN fieldhas been released or, in other words, set to indicate the cAVS subsystem116 is now the owner of the descriptor).

At the operation labeled 9 of FIG. 8, in the same processing period, theGbE subsystem 108 processes the next (e.g., second) work descriptor andfetches the payload for next the PTP period.

At the operation labeled 10 of FIG. 8, based on a number of pre-fetcheddescriptors, the GbE subsystem 108 may fetch more descriptors. In someexamples, the maximum work descriptor does not exceed the configuredmaximum count to thereby ensure that descriptors are valid and preparedby the cAVS subsystem 116 ahead of time.

At the operation labeled 11 of FIG. 8, when the network time matches thedispatch time of the current work descriptor (e.g., the second workdescriptor), the protocol and link layer send the Ethernet packet ontothe physical cable.

At the operation labeled 12 of FIG. 8, when the Ethernet packet(associated with the second descriptor) is successfully sent on theEthernet network, the current work descriptor is updated to release theownership (OWN) field in the descriptor. The work descriptor is writtenback in system memory, so the DSP 234 of the cAVS subsystem 116 can getthe descriptor completion update.

At the operation labeled 13 of FIG. 8, which may be optional in someexamples, an interrupt may be sent from the GbE subsystem 108 to the DSP234 of the cAVS subsystem 116 for the completed descriptor (seconddescriptor). If peer interrupt is not supported by SoC 122, the DSP 234.can read the top of descriptor chain to poll and determine if thedescriptor is completed (e.g., to determine whether the OWN field hasbeen released or, in other words, set to indicate the cAVS subsystem 116is now the owner of the descriptor).

At the operation labeled 14 of FIG. 8, in the same processing period,the GbE subsystem 108 will process the next descriptor (thirddescriptor) and fetch the payload for next PTP period. The subsequenttransfers will maintain a periodic cadence on both the cAVS and the GbEside of the SoC 122, while maintaining the active descriptors within thethreshold descriptor and maximum work descriptor amount.

FIG. 9 depicts an example sequence diagram 900 that illustrates exampleoperation of the SoC 122 of FIG. 7 to receive an input ADA offloadedaudio stream from an AVB endpoint device, such as the endpoint 102. Forexample, the AVB endpoint device 102 can include a microphone to captureaudio to be processed by the SoC 122. The example sequence diagram 900of FIG. 9 illustrates operation of the cAVS subsystem 116, the DDRmemory 112 and the GbE subsystem 108 of the SoC 122 to receive the audiopackets for the offloaded audio stream from the Ethernet network of theAVB system 100, which is labeled as the Ethernet network 804 in FIG. 9.In the illustrated example of FIG. 9, a maximum number of workdescriptors and a threshold descriptor count for the given output audiostream are configurable. For example, in the sequence diagram 900, thenumber work descriptors for the audio stream has been set to 4, and themaximum count of the threshold descriptor count is less than or equal to2 work descriptors.

To process an audio stream received (e.g., captured) from the AVBendpoint device 102, the example sequence diagram 900 begins at theoperation labeled 1 of FIG. 9 at which the DSP 234 of the cAVS subsystem116 prepares a set of two initial work descriptors, and allocates apayload buffer in the DDR memory 112 for the period interval (e.g., 125us).

At the operation labeled 2 of FIG. 9, the DSP 234 of the cAVS subsystem116 sends an IPC command containing an initial enqueue descriptorpointer (referred to herein as INIT_ENQ_PTR) to the GbE subsystem 108.The GbE subsystem 108 uses the initial read pointer to fetch the firstdescriptor for that stream. The IPC command is sent via the IPCinterface 236 connecting cAVS subsystem 116 and accepted by the GbEsubsystem 108.

At the operation labeled 3 of FIG. 9, based on the GbE subsystem 108configuration for descriptor prefetch, the GbE subsystem 108 directmemory accesses one or more descriptors for processing. Additionally,the GbE subsystem 108 allocates the internal Ethernet bandwidth andmanages the Ethernet scheduling. The GbE subsystem 108 processes thecurrent work descriptor (in this case the first descriptor) and gets thepayload buffer pointer address.

At the operation labeled 4 of FIG. 9, when the cAVS schedule time (1 ms.or 0.33 ms for ultra-low latency scheduling) elapses, the DSP 234 of thecAVS subsystem 116 prepares more descriptors and DMAs them into the DDRmemory 112. The DSP 234 of the cAVS subsystem 116 also allocates thepayload buffer regions in the DDR memory 112. In some examples, DSP 234of the cAVS subsystem 116 tracks the firmware scheduling and AVB timeperiods to ensure the number of work descriptors attempted to beprocessed do not exceed the maximum, and so that the threshold numberdescriptors are continuously available for the GbE subsystem 108 toprocess. Note that the cAVS descriptor preparation time may not alignwith PTP period time

At the operation labeled 5 of FIG. 9, the Ethernet packet (first packet)sent by the AVB endpoint device 102 is received by the GbE subsystem108. The incoming packets are expected to closely match the network timecadence for the stream period. Because of network collisions, or latencywithin the AVB endpoint device 102, the current Ethernet packet may bereceived anywhere within the current period, or may overlap withneighboring periods. However, the AVB endpoint device 102 maintains anoverall periodic cadence.

At the operation labeled 6 of FIG. 9, the GbE protocol and link layerreceive and store the current Ethernet AVB packet (first packet) in thereceive queue (e.g., the input stream queue 602). The GbE subsystem 108checks the VLAN tag of the packet and performs other Ethernet specificchecks before accepting the packet. For receive packets, the PTP time inthe received Ethernet AVB packet is forwarded to the cAVS subsystem 116.

At the operation labeled 7 of FIG. 9, the GbE subsystem 108 uses thepayload buffer address of the current work descriptor (firstdescriptor), and DMAs the corresponding payload buffer (first payloadbuffer) to the DDR memory 112.

At the operation labeled 8 of FIG. 9, when the Ethernet packet (firstpacket) is successfully received, the current work descriptor is updatedto release the ownership (OWN) field in the descriptor (e.g., set theOWN field to indicate the cAVS subsystem 116 is the owner). The workdescriptor is written back in the DDR memory 112, which allows the DSP234 of the cAVS subsystem 116 to get the descriptor completion update.

For end-to-end low latency, at the operation labeled 9 of FIG. 9, whichmay be optional, in some examples, a peer interrupt is sent from the GbEsubsystem 108 to the DSP 234 of the cAVS subsystem 116. The interruptcould be a wire interrupt or a peer vendor-defined interrupt message toDSP 234. If peer interrupt is not supported by the SoC 122, the DSP 234can read the top of the descriptor chain to poll and determine if thedescriptor is completed (e.g., to determine whether the OWN field hasbeen released or, in other words, set to indicate the cAVS subsystem 116is now the owner of the descriptor).

At the operation labeled 10 of FIG. 9, based on the processing of anumber of pre-fetched descriptors, the GbE subsystem 108 may fetch moredescriptors. In some examples, the maximum work descriptor does notexceed the configured maximum count to ensure that descriptors are validand prepared by cAVS subsystem 116 ahead of time.

At the operation labeled 11 of FIG. 9, when a peer interrupt is receivedor at the next schedule time, the DSP 234 of the cAVS subsystem 116fetches the current descriptor (first descriptor) and checks theownership (OWN) field. If the descriptor is complete, the cAVS subsystem116 will fetch the capture payload from the DDR memory 112. In someexamples, the DSP 234 of the cAVS subsystem 116 performs processing onthe captured streams.

At the operation labeled 12 of FIG. 9, the next Ethernet packet (secondpacket) sent by the AVB endpoint device 102 is received by the GbEsubsystem 108.

At the operation labeled 13 of FIG. 9, the GbE protocol and link layerreceives and stores the current Ethernet AVB packet (second packet) inthe receive queue (e.g., the input stream queue 602).

At the operation labeled 14 of FIG. 9, the GbE subsystem 108 uses thepayload buffer address of the current work descriptor (seconddescriptor), and DMAs the corresponding payload buffer (first payloadbuffer) to the DDR memory 112.

At the operation labeled 15 of FIG. 9, when the Ethernet packet (secondpacket) is successfully received, the current work descriptor is updatedto release the ownership (OWN) field in the descriptor (e.g., set theOWN field to indicate the cAVS subsystem 116 is the owner). The workdescriptor is written back in the DDR memory 112, which allows the DSP234 of the cAVS subsystem 116 to get the descriptor completion update.

At the operation labeled 16 of FIG. 9, which may be optional, in someexamples, an interrupt is sent from the GbE subsystem 108 to the DSP 234of the cAVS subsystem 116 for the completed descriptor (seconddescriptor). If a peer interrupt is not supported by SoC 122, by defaultthe DSP 234 can read the top of descriptor chain to poll and determineif the descriptor is completed (e.g., the OWN filed is released).

At the operation labeled 17 of FIG. 9, when a peer interrupt is receivedor at the next schedule time, the DSP 234 of the cAVS subsystem 116fetches the current descriptor (second) and checks the ownership (OWN)field. If the descriptor is complete, then the cAVS subsystem 116fetches the capture stream payload from the DDR memory 112.Additionally, the DSP 234 may perform processing on the capture streams.The subsequent transfers maintain a periodic cadence on both the cAVSand the GbE sides of the SoC 122, thereby maintaining the activedescriptors within the threshold descriptor count and maximum workdescriptor amount.

FIGS. 10 and 11 depict example waveforms 1000 and 1100 illustratingstarting and stopping, respectively, of an audio stream by the SoC 122of FIG. 7 across multiple scheduling periods denoted by PTP number. Inthe illustrated examples of FIGS. 10 and 11, audio output streamoperation is executed by rendering a fixed number of audio payloadbuffers per schedule period. However, there are cases in which theintended audio output stream rate cannot be represented by the fixedinteger number of bytes per schedule period, or the audio payload sizeis to be adjusted based on audio rate information from a media clocksource, which may be local or external. For the fractional audio streamrate case, the DSP 234 of the cAVS subsystem 116 performs the averagingand/or padding of additional audio sample block(s), as appropriate.

FIG. 12 depicts an example sequence diagram 1200 that illustratesexample operation of the SoC 122 of FIG. 7 to setup AVB offloading of anaudio stream for which the ADA feature disclosed herein has beenenabled. The example sequence diagram 1200 of FIG. 12 illustratesoperation of the cAVS subsystem 116, the audio driver 114, the AVBdriver 110 and the GbE subsystem 108 of the SoC 122 to offload an audiostream associated an AVB endpoint device, such as the endpoint 102, to adirect hardware path between the cAVS subsystem 116 and the GbEsubsystem 108.

The example sequence diagram 1200 of FIG. 12 begins with an example AVBDevice Attach operation 1204 at which AVB device connection andenumeration is handled between GbE subsystem 108 and the AVB driver 110.In some examples, the initial ADA offload decision is based on the AVBdevice type and identifier of the AVB endpoint (e.g., the endpoint 102).In some examples, the initial ADA offload decision is also based on thecapabilities of the GbE subsystem 108. Once the decision is made the ADAsequencing moves on to an example GbE subsystem initialization operation1208.

At the GbE subsystem initialization operation 1208, the AVB driver 110configures the GbE subsystem 108 to setup the dedicated queues tosupport the ADA for the audio stream, programs the VLAN tag for transmitand receive pipes, and performs any other resource allocation in DMA andFIFOs to support the ADA feature for the audio stream. The dedicatedqueue is setup so that the offloaded audio stream traffic is isolatedfrom other Ethernet traffic. In some examples, if the GbE subsystem 108is limited to performing packet filtering on just VLAN priority, eitherall streams or no stream of a given traffic class will be allowed toundergo the ADA feature. However, if the GbE subsystem 108 has moreflexible filtering (e.g., based on stream_id or DMAC address), then theADA feature can be applied to individual audio streams.

Next, at an example AVB Direct Attach Request operation 1212, whichoccurs after the initial offload decision and configuration is done onEthernet-side of the SoC 122, the AVB driver 110 sends an offloadrequest to audio driver 114. This offload request is used is to discoverADA feature support of cAVS subsystem 116 and to make a final decisionas to whether to offload the AVB audio stream to a direct hardware pathin accordance with the ADA feature, or to pass the audio stream toregular software-based path.

Next, an example AVB Direct Attach Response operation 1216 occurs, whichis the response phase of the ADA request from GbE subsystem 108. At thisoperation phase, the audio driver 114 performs high level checks on theAVB direct attach capabilities in the cAVS subsystem 116 and, based onthis check, returns a response to accept or reject the initial ADAoffload request. In some examples, this is a preliminary response toaccept or reject the initial ADA offload request.

Next, an example Stream Parameter Check Request operation 1218 and anexample Resource Check Request operation 1220 occurs, through which theAVB driver 110 and the audio driver 114 exchange the stream parametersfrom GbE subsystem 108 to the cAVS subsystem 116, and cross check thehardware and firmware resources in the cAVS subsystem 116 to support therequested stream. Example resource checks include, but are not limitedto, firmware module availability, DMA channel availability, internalbandwidth allocation, etc.

Next, an example Resource Check Response operation 1224 occurs. Based onthe resource check performed at operation 1220, the response to thestream parameter check is sent back to the AVB driver 110. In someexamples, this step is the final check before starting the audio stream.In some examples, the response could be accept or reject. In the case ofa reject response, the AVB audio stream will not be offloaded to adirect hardware path between the GbE subsystem 108 and the cAVSsubsystem 116 and, thus, the audio stream will pass the stream through aconventional software-based path between the GbE subsystem 108 and thecAVS subsystem 116. However, in the case of an accept response, the AVBaudio stream will be offloaded to a direct hardware path between the GbEsubsystem 108 and the cAVS subsystem 116.

In some examples, the stream parameter check request and response phaseswill be repeated for all streams associated with a given AVB endpointdevice. There could one or more streams associated with the attached AVBendpoint device, which start and stop independently. There may also beone or more AVB endpoint devices connected to the AVB system 100, andthe AVB endpoint devices may be attached to cAVS subsystem 116 and sharethe same transmit and receive pipes, but use respective stream_idparameters (and/or other AVBIDs, as described above) to identify therespective audio stream traffic.

FIG. 13 depicts an example sequence diagram 1300 that illustratesexample operation of the SoC 122 of FIG. 7 to perform PTP timesynchronization between the GbE subsystem 108 and the cAVS subsystem 116of the SoC 122. The example sequence diagram 1200 of FIG. 12 illustratesoperation of the GbE subsystem 108, the cAVS subsystem 116 and anexample master clock 1304 to perform PTP time synchronization. Themaster clock 1304 is included in the SoC 122 to provide a master clockreference for elements of the SoC 122, such as the GbE subsystem 108 andthe cAVS subsystem 116. For example, the master clock 1304 can beimplemented by an always running timer (ART), a master timer, etc. Incontrast, the PTP master clock to support PTP in accordance with the AVBprotocol may be implemented by an external device, such as a remoteendpoint device, and tracked by the GbE system 108 as a local PTP timer,or may be implemented in the GbE subsystem 108 of the SoC 122 itself.

Precision time protocol (PTP) is the time synchronization service usedin an Ethernet AVB network, such as the AVB system 100. In theillustrated example of FIG. 13, PTP time is handled by the GbE subsystem108. The cAVS subsystem 116 maintain a shadow copy of the PTP time andperforms periodic (and/or aperiodic) time synchronization with GbEsubsystem's PTP time. Such time synchronization is performed if the cAVSsubsystem 116 and the GbE subsystem 108 have different timer referenceclocks, which will introduce clock drift as time progress.

To ensure smooth communication, the PTP time is synchronized with theGbE subsystem 108. The PTP timer maintained by the GbE subsystem 108(e.g., and based on an external master PTP timing source, in someexamples) is shadowed in the cAVS subsystem 116 during initializationand synchronized over time if the reference clocks between the GbEsubsystem 108 and the cAVS subsystem 116 are different. PTP timesynchronization enables accurate timestamping of the AVB packets.Additionally, the cAVS subsystem 116 uses the PTP time included as atimestamp in the AVB audio packet to measure the stream frequency of thecapture stream. PTP time synchronization is also used by the cAVSsubsystem 116 to maintain a periodic schedule for the transmit andreceive pipelines between the cAVS subsystem 116 and the GbE subsystem108. PTP time synchronization is also used to maintain a reliablethreshold amount of DDR payload buffers between the cAVS subsystem 116and the GbE subsystem 108 and avoid overflow or underflow of the AVBdescriptors. The cAVS subsystem 116 corrects drift in the PTP timebetween the cAVS subsystem 116 and the GbE subsystem 108 by initiating a“get_ptp” IPC command at a regular (or irregular) interval, as shown inthe example of FIG. 13.

Turning to FIG. 13, once the audio stream has been offloaded for ADAprocessing as disclosed herein (corresponding to operation 1302 of FIG.13), the cAVS subsystem 116 sends a “get_ptp” IPC command to the GbEsubsystem 108 via the IPC interface 236 (corresponding to operation 1308of FIG. 13). Sending the get_ptp command triggers the cAVS subsystem 116and the GbE subsystem 108 to perform respective example time requestoperations 1312 and 1316 with the master clock 1304. When the timerequest operations 1312 and 1316 complete, master clock times arereturned to the cAVS subsystem 116 and the GbE subsystem 108 viarespective operations 1320 and 1324. Furthermore, when the time requestoperation 1324 completes at the GbE subsystem 108, the GbE subsystem 108returns a “get_ptp response” IPC command to the GbE subsystem 108 viathe IPC interface 236 (corresponding to operation 1328 of FIG. 13),which contains both the master clock time obtained at the GbE subsystem108 and PTP time maintained at the GbE subsystem 108. The cAVS subsystem116 then initializes its PTP shadow timer using a three-way timecorrelation between the master time obtained at the cAVS subsystem 116,the actual GbE subsystem's PTP time, and an offset between the mastertime and a local timer maintained by the cAVS subsystem 116. If thereference clock for the PTP timer in the GbE subsystem 108 and the PTPshadow timer in the cAVS subsystem 116 are driven by different referenceclocks, then the cAVS subsystem 116 triggers a PTP time sync at aperiodic (or aperiodic) time intervals (represented by operations 1332and 1336 in FIG. 13) so that the shadow timer in the cAVS subsystem 116remains within an accuracy tolerance of the PTP timer maintained by theGbE subsystem 108.

As described above in connection with FIGS. 5 and 6, in the illustratedexample implementation of the SoC 122, the cAVS subsystem 116 includesthe audio subsystem IPC transceiver 526 to communicate with the GbEsubsystem 108 via the IPC interface 236, and the GbE subsystem 108includes the GbE subsystem IPC transceiver 626 to communicate with thecAVS subsystem 116 via the IPC interface 236. As such, the audiosubsystem IPC transceiver 526 provides a control interface for the cAVSsubsystem 116 to communicate with the GbE subsystem 108, and the GbEsubsystem IPC transceiver 626 provides a control interface for the GbEsubsystem 108 to communicate with the cAVS subsystem 116. In someexamples, the IPC interface 236 is implemented via an internal fabric ofthe SoC 122. The control and setup access for communication via the IPCinterface 236 are typically infrequent or occur during initializationtime, such that the latency associated with the IPC messages are notcritical.

Example IPC commands supported by the cAVS subsystem 116 and the GbEsubsystem 108 include the following. For example, the cAVS subsystem 116can use an IPC command to request the PTP time for use in synchronizingthe shadow timer of the cAVS subsystem 116 (e.g., an IPC command called“get_ptp”). The cAVS subsystem 116 can also use an IPC command to sendan initial read descriptor pointer (e.g., an IPC command called“init_enq_ptr”). The GbE subsystem 108 can use an IPC command to sendthe last read descriptor pointer to handle exceptions (e.g., an IPCcommand called “last_deq_ptr”). The cAVS subsystem 116 can also use anIPC command to send a generic get/set command to write/read registers ofthe GbE subsystem 108 (e.g., an IPC command called “gen_cmd”). The GbEsubsystem 108 can use an IPC command to request the running writedescriptor pointer (e.g., an IPC command called “cur_enq_ptr”). The cAVSsubsystem 116 can also use an IPC command to request a running readdescriptor pointer (e.g., an IPC command called “cur_deq_ptr”). The GbEsubsystem 108 can also use an IPC command to re-pull the PTP time (e.g.,an IPC command called “resync_ptp”). The GbE subsystem 108 can also usean IPC command to send an interrupt to indicate that the currentdescriptor processing is complete (e.g., an IPC command called“gbe_intr”).

In some example implementations of the SoC 122, there is no restrictionon the number of streams supported per AVB endpoint device, or per VLANtag, which might include one or more AVB endpoint devices. For an audiostream, the SoC 122 may restrict the Ethernet max packet size to be in apayload range of 64-1500 Bytes. In some example, the SoC 122 can startand stop audio streams at any time irrespective of other active andinactive audio streams. In some examples, some or all streams to berendered by the SoC 122 (or, in other words, output by the SoC 122) usea same transmit VLAN tag and share an output (transmit) queue in the GbEsubsystem 108. In some examples, some or all streams to be captured bythe SoC 122 (or, in other words, input to the SoC 122) use a samereceive VLAN tag and share an input (receive) queue in the GbE subsystem108. In some examples, the descriptor chain of the AVB data structureimplemented in the DDR memory 112 is assumed to be a simple ringdescriptor chain. In some such example, the respective payload bufferassociated with each descriptor is contiguous with single data bufferpointer, and is not a scatter-gather implementation. In some examples,the PTP network time is owned by the GbE subsystem 108, and the cAVSsubsystem 116 maintains a shadow copy of the PTP network time that istime synchronized. The PTP times maintained by the cAVS subsystem 116and the GbE subsystem 108 track each other, either by using the samereference clock, or periodically through time synchronization, asdescribed above. In some examples, a “threshold descriptor” count ismaintained in the DDR memory 112, which can help achieve end-to-end lowlatency. In some examples, a “work descriptor” count is managed by theSoC 122 to be greater than or equal to a prefetch configuration of theGbE subsystem 108.

While an example manner of implementing the SoC 122 is illustrated inFIGS. 1-13, one or more of the elements, processes and/or devicesillustrated in FIGS. 1-13 may be combined, divided, re-arranged,omitted, eliminated and/or implemented in any other way. Further, theexample GbE subsystem 108, the example AVB driver 110, the example DDRmemory 112, the example audio driver 114, the example cAVS subsystem116, the example Ethernet-side AVB offloader 230, the example audio-sideAVB offloader 232, the example IPC interface 236, the example AVB driveraudio stream offloader 302, the example AVB driver non-offload streamhandler 304, the example GbE subsystem audio stream offloader 306, theexample GbE non-offload stream handler 308, the example input streambuffer 310, the example stream analyzer 312, the example endpoint devicehandler 314, the example endpoint discoverer and enumerator 404, theexample parameter exchanger 406, the example offload requester 408, theexample stream connector 410, the example queue designator 412, theexample offload decider 414, the example VLAN tag assignor 416, theexample local memory 418, the example synchronizer 422, the exampleaudio subsystem IPC transceiver 526, the example descriptor generator528, the example DMA controller 530, the example pointer controller 534,the example audio-side ownership setter 540, the example audio-sideownership checker 542, the example memory allocator 546, the exampleoffload request response generator 548, the example feature checker 550,the example data structure builder 552, the example audio-side localmemory 554, the example input stream queue 602, the example outputstream queue 604, the example Ethernet-side ownership checker 608, theexample Ethernet-side ownership setter 610, the example queue filler612, the example pointer controller 614, the example queue emptier 616,the example input pointer registers 618, the example output pointerregisters 620, the example stream constructor 622, the example GbEsubsystem IPC transceiver 626, the example host interface 704, theexample bus interface unit 708, the example clock 1305 and/or, moregenerally, the example SoC 122 of FIGS. 1-13 may be implemented byhardware, software, firmware and/or any combination of hardware,software and/or firmware. Thus, for example, any of the example GbEsubsystem 108, the example AVB driver 110, the example DDR memory 112,the example audio driver 114, the example cAVS subsystem 116, theexample Ethernet-side AVB offloader 230, the example audio-side AVBoffloader 232, the example IPC interface 236, the example AVB driveraudio stream offloader 302, the example AVB driver non-offload streamhandler 304, the example GbE subsystem audio stream offloader 306, theexample GbE non-offload stream handler 308, the example input streambuffer 310, the example stream analyzer 312, the example endpoint devicehandler 314, the example endpoint discoverer and enumerator 404, theexample parameter exchanger 406, the example offload requester 408, theexample stream connector 410, the example queue designator 412, theexample offload decider 414, the example VLAN tag assignor 416, theexample local memory 418, the example synchronizer 422, the exampleaudio subsystem IPC transceiver 526, the example descriptor generator528, the example DMA controller 530, the example pointer controller 534,the example audio-side ownership setter 540, the example audio-sideownership checker 542, the example memory allocator 546, the exampleoffload request response generator 548, the example feature checker 550,the example data structure builder 552, the example audio-side localmemory 554, the example input stream queue 602, the example outputstream queue 604, the example Ethernet-side ownership checker 608, theexample Ethernet-side ownership setter 610, the example queue filler612, the example pointer controller 614, the example queue emptier 616,the example input pointer registers 618, the example output pointerregisters 620, the example stream constructor 622, the example GbEsubsystem IPC transceiver 626, the example host interface 704, theexample bus interface unit 708, the example clock 1305 and/or, moregenerally, the example SoC 122 could be implemented by one or moreanalog or digital circuit(s), logic circuits, programmable processor(s),programmable controller(s), graphics processing unit(s) (GPU(s)),digital signal processor(s) (DSP(s)), application specific integratedcircuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or fieldprogrammable logic device(s) (FPLD(s)). When reading any of theapparatus or system claims of this patent to cover a purely softwareand/or firmware implementation, at least one of the example SoC 122, GbEsubsystem 108, the example AVB driver 110, the example DDR memory 112,the example audio driver 114, the example cAVS subsystem 116, theexample Ethernet-side AVB offloader 230, the example audio-side AVBoffloader 232, the example IPC interface 236, the example AVB driveraudio stream offloader 302, the example AVB driver non-offload streamhandler 304, the example GbE subsystem audio stream offloader 306, theexample GbE non-offload stream handler 308, the example input streambuffer 310, the example stream analyzer 312, the example endpoint devicehandler 314, the example endpoint discoverer and enumerator 404, theexample parameter exchanger 406, the example offload requester 408, theexample stream connector 410, the example queue designator 412, theexample offload decider 414, the example VLAN tag assignor 416, theexample local memory 418, the example synchronizer 422, the exampleaudio subsystem IPC transceiver 526, the example descriptor generator528, the example DMA controller 530, the example pointer controller 534,the example audio-side ownership setter 540, the example audio-sideownership checker 542, the example memory allocator 546, the exampleoffload request response generator 548, the example feature checker 550,the example data structure builder 552, the example audio-side localmemory 554, the example input stream queue 602, the example outputstream queue 604, the example Ethernet-side ownership checker 608, theexample Ethernet-side ownership setter 610, the example queue filler612, the example pointer controller 614, the example queue emptier 616,the example input pointer registers 618, the example output pointerregisters 620, the example stream constructor 622, the example GbEsubsystem IPC transceiver 626, the example host interface 704, theexample bus interface unit 708 and/or the example clock 1305 is/arehereby expressly defined to include a non-transitory computer readablestorage device or storage disk such as a memory, a digital versatiledisk (DVD), a compact disk (CD), a Blu-ray disk, etc. including thesoftware and/or firmware. Further still, the example SoC 122 may includeone or more elements, processes and/or devices in addition to, orinstead of, those illustrated in FIGS. 1-13, and/or may include morethan one of any or all of the illustrated elements, processes anddevices. As used herein, the phrase “in communication,” includingvariations thereof, encompasses direct communication and/or indirectcommunication through one or more intermediary components, and does notrequire direct physical (e.g., wired) communication and/or constantcommunication, but rather additionally includes selective communicationat periodic intervals, scheduled intervals, aperiodic intervals, and/orone-time events.

Sequence diagrams and a flowchart representative of example hardwarelogic, machine readable instructions, hardware implemented statemachines, and/or any combination thereof for implementing the SoC 122are shown in FIGS. 8, 9, 12, 13 and 14. In a machine readableinstruction implementation, the machine readable instructions may be oneor more executable programs or portion(s) of an executable program forexecution by a computer processor such as the processor 1512 shown inthe example processor platform 1500 discussed below in connection withFIG. 15. The program may be embodied in software stored on anon-transitory computer readable storage medium such as a CD-ROM, afloppy disk, a hard drive, a DVD, a Blu-ray disk, or a memory associatedwith the processor 1512, but the entire program and/or parts thereofcould alternatively be executed by a device other than the processor1512 and/or embodied in firmware or dedicated hardware. Further,although the example program is described with reference to the sequencediagrams and flowchart illustrated in FIGS. 8, 9, 12, 13 and 14, manyother methods of implementing the example SoC 122 may alternatively beused. For example, the order of execution of the blocks may be changed,and/or some of the blocks described may be changed, eliminated, orcombined. Additionally or alternatively, any or all of the blocks may beimplemented by one or more hardware circuits (e.g., discrete and/orintegrated analog and/or digital circuitry, an FPGA, an ASIC, acomparator, an operational-amplifier (op-amp), a logic circuit, etc.)structured to perform the corresponding operation without executingsoftware or firmware.

The machine readable instructions described herein may be stored in oneor more of a compressed format, an encrypted format, a fragmentedformat, a packaged format, etc. Machine readable instructions asdescribed herein may be stored as data (e.g., portions of instructions,code, representations of code, etc.) that may be utilized to create,manufacture, and/or produce machine executable instructions. Forexample, the machine readable instructions may be fragmented and storedon one or more storage devices and/or computing devices (e.g., servers).The machine readable instructions may require one or more ofinstallation, modification, adaptation, updating, combining,supplementing, configuring, decryption, decompression, unpacking,distribution, reassignment, etc., in order to make them directlyreadable and/or executable by a computing device and/or other machine.For example, the machine readable instructions may be stored in multipleparts, which are individually compressed, encrypted, and stored onseparate computing devices, wherein the parts when decrypted,decompressed, and combined form a set of executable instructions thatimplement a program such as that described herein. In another example,the machine readable instructions may be stored in a state in which theymay be read by a computer, but require addition of a library (e.g., adynamic link library), a software development kit (SDK), an applicationprogramming interface (API), etc. in order to execute the instructionson a particular computing device or other device. In another example,the machine readable instructions may need to be configured (e.g.,settings stored, data input, network addresses recorded, etc.) beforethe machine readable instructions and/or the corresponding program(s)can be executed in whole or in part. Thus, the disclosed machinereadable instructions and/or corresponding program(s) are intended toencompass such machine readable instructions and/or program(s)regardless of the particular format or state of the machine readableinstructions and/or program(s) when stored or otherwise at rest or intransit.

As mentioned above, the example processes of FIGS. 8, 9, 12, 13 and 14may be implemented using executable instructions (e.g., computer and/ormachine readable instructions) stored on a non-transitory computerand/or machine readable medium such as a hard disk drive, a flashmemory, a read-only memory, a compact disk, a digital versatile disk, acache, a random-access memory and/or any other storage device or storagedisk in which information is stored for any duration (e.g., for extendedtime periods, permanently, for brief instances, for temporarilybuffering, and/or for caching of the information). As used herein, theterm non-transitory computer readable medium is expressly defined toinclude any type of computer readable storage device and/or storage diskand to exclude propagating signals and to exclude transmission media.

“Including” and “comprising” (and all forms and tenses thereof) are usedherein to be open ended terms. Thus, whenever a claim employs any formof “include” or “comprise” (e.g., comprises, includes, comprising,including, having, etc.) as a preamble or within a claim recitation ofany kind, it is to be understood that additional elements, terms, etc.may be present without falling outside the scope of the correspondingclaim or recitation. As used herein, when the phrase “at least” is usedas the transition term in, for example, a preamble of a claim, it isopen-ended in the same manner as the term “comprising” and “including”are open ended. The term “and/or” when used, for example, in a form suchas A, B, and/or C refers to any combination or subset of A, B, C such as(1) A alone, (2) B alone, (3) C alone, (4) A with B, (5) A with C, (6) Bwith C, and (7) A with B and with C. As used herein in the context ofdescribing structures, components, items, objects and/or things, thephrase “at least one of A and B” is intended to refer to implementationsincluding any of (1) at least one A, (2) at least one B, and (3) atleast one A and at least one B. Similarly, as used herein in the contextof describing structures, components, items, objects and/or things, thephrase “at least one of A or B” is intended to refer to implementationsincluding any of (1) at least one A, (2) at least one B, and (3) atleast one A and at least one B. As used herein in the context ofdescribing the performance or execution of processes, instructions,actions, activities and/or steps, the phrase “at least one of A and B”is intended to refer to implementations including any of (1) at leastone A, (2) at least one B, and (3) at least one A and at least one B.Similarly, as used herein in the context of describing the performanceor execution of processes, instructions, actions, activities and/orsteps, the phrase “at least one of A or B” is intended to refer toimplementations including any of (1) at least one A, (2) at least one B,and (3) at least one A and at least one B.

The example program 1400 of FIG. 14 begins at block 1405 at which theGbE subsystem 108 of the SoC 122 detects, as described above, thepresence of an AVB endpoint device, such as the AVB endpoint device 102,in the AVB system 100. At block 1410, the AVB driver 110 and the audiodriver 114 of the SoC 122 operate, as described above, to initiate theAVB data structures to allow the audio stream(s) associated with the AVBendpoint device 102 detected at block 1405 to be offloaded to a directhardware path between the GbE subsystem 108 and the cAVS subsystem 116.As described above, the direct hardware path is implemented via the DDRmemory 112 of the SoC 122. At block 1415, the AVB driver 110 and theaudio driver 114 of the SoC 122 transfer audio stream control to the DSP234 of the cAVS subsystem 116, as described above, which enables theaudio stream to be communicated between the GbE subsystem 108 and thecAVS subsystem 116 via the direct hardware path implemented with the DDRmemory 112 while bypassing the AVB driver 110 and the audio driver 114.At block 1420, the cAVS subsystem 116 initializes and maintainssynchronization of its PTP shadow timer, as described above. Theprocessing at blocks 1415 and 1420 continues until the AVB endpointdevice 102 is removed (e.g., disconnected) from the AVB system 100(block 1425).

FIG. 15 is a block diagram of an example processor platform 1500structured to execute the instructions of FIGS. 8, 9, 12, 13 and/or 14to implement the SoC 122 of FIGS. 1-13. The processor platform 1500 canbe, for example, a server, a personal computer, a workstation, aself-learning machine (e.g., a neural network), a mobile device (e.g., acell phone, a smart phone, a tablet such as an iPad™), a personaldigital assistant (PDA), an Internet appliance, a DVD player, a CDplayer, a digital video recorder, a Blu-ray player, a gaming console, apersonal video recorder, a set top box, a control unit device in avehicle or industrial installation, or any other type of computingdevice.

The processor platform 1500 of the illustrated example includes aprocessor 1512. The processor 1512 of the illustrated example ishardware. For example, the processor 1512 can be implemented by one ormore integrated circuits, logic circuits, microprocessors, GPUs, DSPs,or controllers from any desired family or manufacturer. The hardwareprocessor may be a semiconductor based (e.g., silicon based) device. Inthis example, the processor implements AVB driver 110 and the audiodriver 114 of the SoC 122.

The processor 1512 of the illustrated example includes a local memory1513 (e.g., a cache). The processor 1512 of the illustrated example isin communication with a main memory including a volatile memory 1514 anda non-volatile memory 1516 via a bus 1518. The volatile memory 1514 maybe implemented by Synchronous Dynamic Random Access Memory (SDRAM),Dynamic Random Access Memory (DRAM), RAMBUS® Dynamic Random AccessMemory (RDRAM®) and/or any other type of random access memory device.The non-volatile memory 1516 may be implemented by flash memory and/orany other desired type of memory device. Access to the main memory 1514,1516 is controlled by a memory controller.

The processor platform 1500 of the illustrated example also includes aninterface circuit 1520. The interface circuit 1520 may be implemented byany type of interface standard, such as an Ethernet interface, auniversal serial bus (USB), a Bluetooth® interface, a near fieldcommunication (NFC) interface, and/or a PCI express interface. In theillustrated example of FIG. 5, the interface circuit 1520 implements theGbE subsystem 108 and the cAVS subsystem 116 of the SoC 122.

In the illustrated example, one or more input devices 1522 are connectedto the interface circuit 1520. The input device(s) 1522 permit(s) a userto enter data and/or commands into the processor 1012. The inputdevice(s) can be implemented by, for example, an audio sensor, amicrophone, a camera (still or video), a keyboard, a button, a mouse, atouchscreen, a track-pad, a trackball, isopoint and/or a voicerecognition system.

One or more output devices 1524 are also connected to the interfacecircuit 1520 of the illustrated example. The output devices 1524 can beimplemented, for example, by display devices (e.g., a light emittingdiode (LED), an organic light emitting diode (OLED), a liquid crystaldisplay (LCD), a cathode ray tube display (CRT), an in-place switching(IPS) display, a touchscreen, etc.), a tactile output device, a printerand/or speaker. The interface circuit 1520 of the illustrated example,thus, may include a graphics driver card, a graphics driver chip and/ora graphics driver processor.

The interface circuit 1520 of the illustrated example also includes acommunication device such as a transmitter, a receiver, a transceiver, amodem, a residential gateway, a wireless access point, and/or a networkinterface to facilitate exchange of data with external machines (e.g.,computing devices of any kind) via a network 1526. The communication canbe via, for example, an Ethernet connection, a digital subscriber line(DSL) connection, a telephone line connection, a coaxial cable system, asatellite system, a line-of-site wireless system, a cellular telephonesystem, etc.

The processor platform 1500 of the illustrated example also includes oneor more mass storage devices 1528 for storing software and/or data.Examples of such mass storage devices 1528 include floppy disk drives,hard drive disks, compact disk drives, Blu-ray disk drives, redundantarray of independent disks (RAID) systems, and digital versatile disk(DVD) drives.

The machine executable instructions 1532 of FIGS. 8, 9, 12, 13 and/or 14may be stored in the mass storage device 1028, in the volatile memory1014, in the non-volatile memory 1016, and/or on a removablenon-transitory computer readable storage medium such as a CD or DVD.

From the foregoing, it will be appreciated that example methods,apparatus and articles of manufacture have been disclosed that implementan AVB direct attach feature to use a direct hardware path, instead of asoftware-based path, to communicate audio stream data between the audioand GbE subsystems used to process audio stream(s) associated with anAVB endpoint device. The disclosed methods, apparatus and articles ofmanufacture improve the efficiency of using a computing device, such asan entertainment unit, by reduce audio streaming latency between theaudio and Gigabit Ethernet subsystems that process the audio stream(s)associated with the AVB endpoint device. The disclosed methods,apparatus and articles of manufacture are accordingly directed to one ormore improvement(s) in the functioning of a computer.

The foregoing disclosure provides examples of implementing an AVB directattach feature to reduce audio streaming latency between audio and GbEsubsystems by using a direct hardware path, instead of a software-basedpath, to communicate audio stream data between the audio and GbEsubsystems. The following further examples, which include subject mattersuch as an integrated circuit to process an audio stream associated withan endpoint on an AVB network, an entertainment unit including such anintegrated circuit, at least one computer-readable storage mediumincluding instructions that, when executed by at least one processor,cause the at least one processor to process an audio stream associatedwith an endpoint on an AVB network, and a method to process an audiostream associated with an endpoint on an AVB network, are disclosedherein. The disclosed examples can be implemented individually and/or inone or more combinations.

Example 1 is an integrated circuit to process an audio stream associatedwith an endpoint device on a network. The integrated circuit of example1 includes an Ethernet subsystem to access the network, an audiosubsystem to process audio data associated with the audio stream, and adirect hardware path between the Ethernet subsystem and the audiosubsystem to exchange audio data between the Ethernet subsystem and theaudio subsystem without the audio data being processed by a firstsoftware driver that is to provide access to the Ethernet subsystem or asecond software driver that is to provide access to the audio subsystem.

Example 2 includes the subject matter of example 1, and further includesdouble data rate (DDR) memory in communication with the Ethernetsubsystem and the audio subsystem, the direct hardware path implementedby a data structure in the DDR memory.

Example 3 includes the subject matter of example 2, wherein the datastructure includes a circular ring of work descriptors and a payloadsection including payload buffers, respective ones of the workdescriptors pointing to respective ones of the payload buffers.

Example 4 includes the subject matter of any one of examples 1 to 3,wherein the endpoint device is a first endpoint device, the audio streamis a first audio stream, the audio data is first audio data, and atleast one of the first software driver or the second software driver isto process second audio data to be exchanged between the Ethernetsubsystem and the audio subsystem, the second audio data associated witha second audio stream, the second audio stream associated with a secondendpoint device different from the first endpoint device.

Example 5 includes the subject matter of any one of examples 1 to 4,wherein the first software driver is to detect the endpoint deviceassociated with the audio stream, and query the second software driverto determine whether the audio stream is to be offloaded to the directhardware path.

Example 6 includes the subject matter of example 5, wherein the firstsoftware driver is to determine whether the audio stream is to beoffloaded to the direct hardware path based on a whitelist specifying atleast one of device types, device identifiers, vendor identifiers,virtual local area network (VLAN) tags, VLAN priorities, streamidentifiers or destination medium access control (DMAC) addresses.

Example 7 includes the subject matter of any one of examples 1 to 6, andfurther includes a digital signal processor (DSP) to controlcommunication of the audio data between the Ethernet subsystem and theaudio subsystem using the direct hardware path.

Example 8 includes the subject matter of any one of examples 1 to 7,wherein the audio data is formatted in accordance with an audio videobridging (AVB) protocol.

Example 9 is an entertainment unit including an audio peripheral and anintegrated circuit. The integrated circuit of FIG. 9 includes anEthernet subsystem to access a network, a first software driver toprovide access to the Ethernet subsystem, an audio subsystem to processaudio data associated with an audio stream, the audio stream associatedwith an endpoint device in communication with the network, a secondsoftware driver to provide access to the audio subsystem, and memory incommunication with the Ethernet subsystem and the audio subsystem tostore a data structure to exchange the audio data between the Ethernetsubsystem and the audio subsystem without the audio data being processedby the first software driver or the second software driver.

Example 10 includes the subject matter of example 9, wherein the datastructure includes a circular ring of work descriptors and a payloadsection including payload buffers, respective ones of the workdescriptors pointing to respective ones of the payload buffers.

Example 11 includes the subject matter of example 9 or 10, wherein thefirst software driver is to detect the endpoint device associated withthe audio stream, and query the second software driver to determinewhether the audio stream is to be offloaded for communication betweenthe Ethernet subsystem and the audio subsystem using the data structurestored in the memory.

Example 12 includes the subject matter of example 11, wherein the firstsoftware driver is further to determine, based on a whitelist specifyingat least one of device types, device identifiers, vendor identifiers,virtual local area network (VLAN) tags, VLAN priorities, streamidentifiers or destination medium access control (DMAC) addresses,whether the audio stream is to be offloaded for communication betweenthe Ethernet subsystem and the audio subsystem using the data structurestored in the memory.

Example 13 includes the subject matter of any one of examples 9 to 12,wherein the integrated circuit further includes a digital signalprocessor (DSP) to control communication of the audio data between theEthernet subsystem and the audio subsystem using the data structurestored in the memory.

Example 14 includes the subject matter of any one of examples 9 to 13,wherein the audio data is formatted in accordance with an audio videobridging (AVB) protocol.

Example 15 includes at least one non-transitory computer readable mediumincluding computer readable instructions that, when executed by at leastone processor, cause the at least one processor to at least configure adirect hardware path between an Ethernet subsystem and an audiosubsystem to exchange audio data between the Ethernet subsystem and theaudio subsystem without the audio data being processed by a firstsoftware driver that is to provide access to the Ethernet subsystem or asecond software driver that is to provide access to the audio subsystem,the audio data associated with an audio stream at least one oftransmitted to or received from an audio endpoint device via a network,and synchronize a shadow precision time protocol timer with a precisiontime protocol timer maintained by the Ethernet subsystem.

Example 16 includes the subject matter of example 15, wherein the directhardware path is implemented by a data structure stored in memory, thememory in communication with the Ethernet subsystem and the audiosubsystem.

Example 17 includes the subject matter of example 15 or 16, wherein thedata structure includes a circular ring of work descriptors and apayload section including payload buffers, respective ones of the workdescriptors pointing to respective ones of the payload buffers.

Example 18 includes the subject matter of any one of examples 15 to 17,wherein the endpoint device is a first endpoint device, the audio streamis a first audio stream, the audio data is first audio data, and theinstructions cause the at least one processor to invoke at least one ofthe first software driver or the second software driver to processsecond audio data to be exchanged between the Ethernet subsystem and theaudio subsystem, the second audio data associated with a second audiostream, the second audio stream associated with a second endpoint devicedifferent from the first endpoint device.

Example 19 includes the subject matter of any one of examples 15 to 18,wherein the audio data is formatted in accordance with an audio videobridging (AVB) protocol.

Example 20 is a method to process an audio stream associated with anendpoint device on a network. The method of example 20 includesconfiguring, by executing an instruction with at least one processor, adirect hardware path between an Ethernet subsystem and an audiosubsystem to exchange audio data between the Ethernet subsystem and theaudio subsystem without the audio data being processed by a firstsoftware driver that is to provide access to the Ethernet subsystem or asecond software driver that is to provide access to the audio subsystem,the audio data associated with the audio stream, the audio stream atleast one of transmitted to or received from the endpoint device via thenetwork, and synchronizing, by executing an instruction with the atleast one processor, a shadow precision time protocol timer with aprecision time protocol timer maintained by the Ethernet subsystem.

Example 21 includes the subject matter of example 20, wherein the directhardware path is implemented by a data structure stored in memory, thememory in communication with the Ethernet subsystem and the audiosubsystem.

Example 22 includes the subject matter of example 21, wherein the datastructure includes a circular ring of work descriptors and a payloadsection including payload buffers, respective ones of the workdescriptors pointing to respective ones of the payload buffers.

Example 23 includes the subject matter of any one of examples 20 to 22,wherein the endpoint device is a first endpoint device, the audio streamis a first audio stream, the audio data is first audio data, and furtherincluding invoking at least one of the first software driver or thesecond software driver to process second audio data to be exchangedbetween the Ethernet subsystem and the audio subsystem, the second audiodata associated with a second audio stream, the second audio streamassociated with a second endpoint device different from the firstendpoint device.

Example 24 includes the subject matter of any one of examples 20 to 23,wherein the audio data is formatted in accordance with an audio videobridging (AVB) protocol.

Example 25 is an example computer readable medium that includes firstinstructions that, when executed, cause a machine to at least one ofdistribute, configure, assemble, install, instantiate, retrieve,decompress, and decrypt second instructions for execution, the secondinstructions to, when executed, cause a machine to at least: (1)configure a direct hardware path between an Ethernet subsystem and anaudio subsystem to exchange audio data between the Ethernet subsystemand the audio subsystem without the audio data being processed by afirst software driver that is to provide access to the Ethernetsubsystem or a second software driver that is to provide access to theaudio subsystem, the audio data associated with an audio stream at leastone of transmitted to or received from an audio endpoint device via anetwork, and (2) synchronize a shadow precision time protocol timer witha precision time protocol timer maintained by the Ethernet subsystem.

Although certain example methods, apparatus and articles of manufacturehave been disclosed herein, the scope of coverage of this patent is notlimited thereto. On the contrary, this patent covers all methods,apparatus and articles of manufacture fairly falling within the scope ofthe claims of this patent.

What is claimed is:
 1. An integrated circuit to process an audio streamassociated with an endpoint device on a network, the integrated circuitcomprising: an Ethernet subsystem to access the network; an audiosubsystem to process audio data associated with the audio stream; adirect hardware path between the Ethernet subsystem and the audiosubsystem to exchange audio data between the Ethernet subsystem and theaudio subsystem, the direct hardware path structured to allow the audiodata exchanged between the Ethernet subsystem and the audio subsystem tobypass a first software driver that is to provide access to the Ethernetsubsystem and to bypass a second software driver that is to provideaccess to the audio subsystem, the direct hardware path implemented by adata structure in memory, and the Ethernet subsystem to indicate whenthe audio data stored in the data structure is to be processed by theaudio subsystem; and a shadow precision time protocol timer maintainedby the audio subsystem, the shadow precision time protocol timersynchronized with a precision time protocol timer maintained by theEthernet subsystem.
 2. The integrated circuit of claim 1, wherein thememory is implemented as a double data rate (DDR) memory incommunication with the Ethernet subsystem and the audio subsystem. 3.The integrated circuit of claim 1, wherein the data structure includes acircular ring of work descriptors and a payload section includingpayload buffers, respective ones of the work descriptors point torespective ones of the payload buffers, the work descriptors include anownership bit, and the Ethernet subsystem is to set the ownership bit toindicate when the audio data stored in the data structure is to beprocessed by the audio subsystem.
 4. The integrated circuit of claim 1,wherein the endpoint device is a first endpoint device, the audio streamis a first audio stream, the audio data is first audio data, and atleast one of the first software driver or the second software driver isto process second audio data to be exchanged between the Ethernetsubsystem and the audio subsystem, the second audio data associated witha second audio stream, the second audio stream associated with a secondendpoint device different from the first endpoint device.
 5. Theintegrated circuit of claim 1, wherein the first software driver is to:detect the endpoint device associated with the audio stream; and querythe second software driver to determine whether the audio stream is tobe offloaded to the direct hardware path.
 6. The integrated circuit ofclaim 5, wherein the first software driver is to determine whether theaudio stream is to be offloaded to the direct hardware path based on alist of devices suitable for offloading, the list specifying at leastone of device types, device identifiers, vendor identifiers, virtuallocal area network (VLAN) tags, VLAN priorities, stream identifiers ordestination medium access control (DMAC) addresses.
 7. The integratedcircuit of claim 1, further including a digital signal processor (DSP)to control communication of the audio data between the Ethernetsubsystem and the audio subsystem using the direct hardware path.
 8. Theintegrated circuit of claim 1, wherein the audio data is formatted inaccordance with an audio video bridging (AVB) protocol.
 9. Anentertainment unit comprising: an audio peripheral; and an integratedcircuit including: an Ethernet subsystem to access a network; a firstsoftware driver to provide access to the Ethernet subsystem; an audiosubsystem to process audio data associated with an audio stream, theaudio stream associated with an endpoint device in communication withthe network; a second software driver to provide access to the audiosubsystem; memory in communication with the Ethernet subsystem and theaudio subsystem to store a data structure to exchange the audio databetween the Ethernet subsystem and the audio subsystem, the datastructure to allow the audio data to bypass the first software driverand the second software driver, the Ethernet subsystem to indicate whenthe audio data stored in the data structure is to be processed by theaudio subsystem; and a shadow precision time protocol timer, the shadowprecision time protocol timer synchronized with a precision timeprotocol timer maintained by the Ethernet subsystem.
 10. Theentertainment unit of claim 9, wherein the data structure includes acircular ring of work descriptors and a payload section includingpayload buffers, respective ones of the work descriptors point torespective ones of the payload buffers, the work descriptors include anownership bit, and the Ethernet subsystem is to set the ownership bit toindicate when the audio data stored in the data structure is to beprocessed by the audio subsystem.
 11. The entertainment unit of claim 9,wherein the first software driver is to: detect the endpoint deviceassociated with the audio stream; and query the second software driverto determine whether the audio stream is to be offloaded forcommunication between the Ethernet subsystem and the audio subsystemusing the data structure stored in the memory.
 12. The entertainmentunit of claim 11, wherein the first software driver is further todetermine, based on a list of devices suitable for offloading, the listspecifying at least one of device types, device identifiers, vendoridentifiers, virtual local area network (VLAN) tags, VLAN priorities,stream identifiers or destination medium access control (DMAC)addresses, whether the audio stream is to be offloaded for communicationbetween the Ethernet subsystem and the audio subsystem using the datastructure stored in the memory.
 13. The entertainment unit of claim 9,wherein the integrated circuit further includes a digital signalprocessor (DSP) to control communication of the audio data between theEthernet subsystem and the audio subsystem using the data structurestored in the memory.
 14. The entertainment unit of claim 9, wherein theaudio data is formatted in accordance with an audio video bridging (AVB)protocol.
 15. At least one non-transitory computer readable mediumcomprising computer readable instructions that, when executed by atleast one processor, cause the at least one processor to at least:configure a direct hardware path between an Ethernet subsystem and anaudio subsystem to exchange audio data between the Ethernet subsystemand the audio subsystem, the data direct hardware path structured toallow the audio data to bypass a first software driver that is toprovide access to the Ethernet subsystem and to bypass a second softwaredriver that is to provide access to the audio subsystem, the audio dataassociated with an audio stream at least one of transmitted to orreceived from an audio endpoint device via a network the direct hardwarepath implemented by a data structure in memory, the Ethernet subsystemto indicate when the audio data stored in the data structure is to beprocessed by the audio subsystem; and synchronize a shadow precisiontime protocol timer with a precision time protocol timer maintained bythe Ethernet subsystem.
 16. The at least one non-transitory computerreadable medium of claim 15, wherein the direct hardware path isimplemented by a double data rate (DDR) memory, the DDR memory incommunication with the Ethernet subsystem and the audio subsystem. 17.The at least one non-transitory computer readable medium of claim 16,wherein the data structure includes a circular ring of work descriptorsand a payload section including payload buffers, respective ones of thework descriptors pointing to respective ones of the payload buffers. 18.The at least one non-transitory computer readable medium of claim 15,wherein the endpoint device is a first endpoint device, the audio streamis a first audio stream, the audio data is first audio data, and theinstructions cause the at least one processor to invoke at least one ofthe first software driver or the second software driver to processsecond audio data to be exchanged between the Ethernet subsystem and theaudio subsystem, the second audio data associated with a second audiostream, the second audio stream associated with a second endpoint devicedifferent from the first endpoint device.
 19. The at least onenon-transitory computer readable medium of claim 15, wherein the audiodata is formatted in accordance with an audio video bridging (AVB)protocol.
 20. A method to process an audio stream associated with anendpoint device on a network, the method comprising: configuring, byexecuting an instruction with at least one processor, a direct hardwarepath between an Ethernet subsystem and an audio subsystem to exchangeaudio data between the Ethernet subsystem and the audio subsystem, thedirect hardware path structured to allow the audio data exchangedbetween the Ethernet subsystem and the audio subsystem to bypass a firstsoftware driver that is to provide access to the Ethernet subsystem andto bypass a second software driver that is to provide access to theaudio subsystem, the audio data associated with the audio stream, theaudio stream at least one of transmitted to or received from theendpoint device via the network, the Ethernet subsystem to indicate whenthe audio data stored in the data structure is to be processed by theaudio subsystem; and synchronizing, by executing an instruction with theat least one processor, a shadow precision time protocol timer with aprecision time protocol timer maintained by the Ethernet subsystem. 21.The method of claim 20, wherein the direct hardware path is implementedby a data structure stored in memory, the memory in communication withthe Ethernet subsystem and the audio subsystem.
 22. The method of claim21, wherein the data structure includes a circular ring of workdescriptors and a payload section including payload buffers, respectiveones of the work descriptors pointing to respective ones of the payloadbuffers, the work descriptors including an ownership bit, and theEthernet subsystem to set the ownership bit to indicate when the audiodata stored in the data structure is to be processed by the audiosubsystem.
 23. The method of claim 20, wherein the endpoint device is afirst endpoint device, the audio stream is a first audio stream, theaudio data is first audio data, and further including invoking at leastone of the first software driver or the second software driver toprocess second audio data to be exchanged between the Ethernet subsystemand the audio subsystem, the second audio data associated with a secondaudio stream, the second audio stream associated with a second endpointdevice different from the first endpoint device.
 24. The method of claim20, wherein the audio data is formatted in accordance with an audiovideo bridging (AVB) protocol.